Menu Docs

Página inicial do DocsIniciar e gerenciar o MongoDBMongoDB Atlas

faixa

Nesta página

  • Definição
  • Sintaxe
  • Opções
  • Exemplos
  • Exemplo de número
  • Exemplo de data
  • Exemplo de string
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 e double.

  • 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).

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}

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 (>) ou maiores ou iguais a (>=) em relação ao valor fornecido.

  • Para campos de número, o valor pode ser um tipo de dados int32, int64 ou double.

  • Para campos de data, o valor deve ser uma data formatada ISODate .

  • Para campos de string, o valor deve ser indexado como tipo Atlas Search token.

Não
lt ou lte
Data ou número BSON

Localize valores menores que (<) ou menores ou iguais a (<=) em relação ao valor fornecido.

  • Para campos de número, o valor pode ser um tipo de dados int32, int64 ou double.

  • Para campos de data, o valor deve ser uma data formatada ISODate .

  • Para campos de string, o valor deve ser indexado como tipo Atlas Search token.

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:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado pela expressão fornecida.

Para obter informações sobre como utilizar o score em sua consulta, consulte Classificar os documentos nos resultados.

Observação

Quando 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

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.

Os exemplos a seguir usam índices em campos numéricos nos dados de amostra e executam queries range nos campos indexados.

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.

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.

1db.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") }

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.

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"
}
}
}
}

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.

1db.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' }
]
← String de query