Página inicial do Docs → Iniciar e gerenciar o MongoDB → MongoDB Atlas
faixa
Definição
range
O operador
range
aceita fazer query e pontuar valores de número, data e string. Este operador pode ser usado para fazer uma pesquisa sobre:Campos numéricos dos tipos de dados BSON
int32
,int64
edouble
.Campos de data do tipo de dados BSON
date
no formato ISODate .Campos de string do tipo de dados BSON
string
indexados como tipo token do Atlas Search.
Você pode usar o operador
range
para encontrar resultados que estejam dentro de um determinado intervalo numérico, de data ou letra (do alfabeto inglês).
Sintaxe
range
tem a seguinte sintaxe:
1 { 2 "$search": { 3 "index": <index name>, // optional, defaults to "default" 4 "range": { 5 "path": "<field-to-search>", 6 "gt | gte": <value-to-search>, 7 "lt | lte": <value-to-search>, 8 "score": <score-options> 9 } 10 } 11 }
Opções
range
usa os seguintes termos para construir uma consulta:
Campo | Tipo | Descrição | necessidade |
---|---|---|---|
gt ou gte | Data ou número BSON | Localize valores maiores que (
| Não |
lt ou lte | Data ou número BSON | Localize valores menores que (
| Não |
path | cadeia de caracteres ou matriz de cadeias de caracteres | Campo ou campos indexados a serem pesquisados. Veja Construção de caminhos. | sim |
score | objeto | Modifique a pontuação atribuída aos resultados de pesquisa correspondentes. Você pode modificar a pontuação padrão usando as seguintes opções:
Para obter informações sobre como utilizar o ObservaçãoQuando você faz query de valores em arrays, o Atlas Search não altera a pontuação dos resultados correspondentes com base no número de valores dentro da array que correspondeu à query. A pontuação seria igual a uma única correspondência, independentemente do número de correspondências dentro de uma array. | Não |
Exemplos
Os exemplos abaixo usam a collection nos dados de amostra. Se você carregou os dados de amostra no cluster, poderá criar os índices usando as definições de índice nos exemplos abaixo e executar as queries de exemplo no cluster.
Dica
Se você já carregou o conjunto de dados de amostra, siga o tutorial Iniciar com Atlas Search para criar uma definição de índice e executar queries de Atlas Search.
Exemplo de número
Os exemplos a seguir usam índices em campos numéricos nos dados de amostra e executam queries range
nos campos indexados.
Exemplo de data
O exemplo seguinte utiliza o operador range
para fazer uma query de um campo de data na collection sample_mflix.movies
. Neste exemplo, você pode utilizar mapeamentos estáticos ou dinâmicos para indexar o campo do tipo date
denominado released
na collection.
Índice de amostra
Amostra de query
A consulta a seguir pesquisa filmes lançados entre 1 de janeiro de 2010 e 1 janeiro de 2015. Inclui um estágio $limit
para limitar o resultado para 5 resultados e um estágio $project
para excluir todos os campos, exceto title
e released
.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "range": { 5 "path": "released", 6 "gt": ISODate("2010-01-01T00:00:00.000Z"), 7 "lt": ISODate("2015-01-01T00:00:00.000Z") 8 } 9 } 10 }, 11 { 12 "$limit": 5 13 }, 14 { 15 "$project": { 16 "_id": 0, 17 "title": 1, 18 "released": 1 19 } 20 } 21 ])
A query acima retorna os seguintes resultados de pesquisa:
1 { "title" : "The Fall of the House of Usher", "released" : ISODate("2011-09-20T00:00:00Z") } 2 { "title" : "The Blood of a Poet", "released" : ISODate("2010-05-20T00:00:00Z") } 3 { "title" : "Too Much Johnson", "released" : ISODate("2014-08-30T00:00:00Z") } 4 { "title" : "Stolen Desire", "released" : ISODate("2012-07-01T00:00:00Z") } 5 { "title" : "The Monkey King", "released" : ISODate("2012-01-12T00:00:00Z") }
Exemplo de string
O exemplo abaixo usa o operador range
para fazer query de um campo de string na collection sample_mflix.movies
. Para este exemplo, você deve utilizar mapeamentos estáticos para indexar o campo denominado title
na collection como tipo Atlas Search token
.
Índice de amostra
A seguinte definição de índice denominada default
indexa o campo title
na collection movies
como tipo token
do Atlas Search:
{ "mappings": { "dynamic": false, "fields": { "title": { "type": "token", "normalizer": "lowercase" } } } }
Amostra de query
A query a seguir pesquisa títulos de filmes que contenham caracteres entre city
e country
. Inclui um estágio $limit
para limitar o resultado para 5 resultados e um estágio $project
para excluir todos os campos, exceto title
.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "range": { 5 "path": "title", 6 "gt": "city", 7 "lt": "country" 8 } 9 } 10 }, 11 { 12 "$limit": 5 13 }, 14 { 15 "$project": { 16 "_id": 0, 17 "title": 1 18 } 19 } 20 ])
[ { title: 'Civilization' }, { title: 'Clash of the Wolves' }, { title: 'City Lights' }, { title: 'Comradeship' }, { title: 'Come and Get It' } ]