Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

range ( Operador de pesquisa MongoDB )

range

O operador range tem suporte para queries e pontuação de valores numéricos, de data e string. Você pode usar esse operador para localizar resultados que estejam dentro de um determinado intervalo numérico, de data, objectId ou letra (do alfabeto em inglês).

range pode fazer queries dos seguintes tipos de dados:

range tem a seguinte sintaxe:

{ "$search": { "index": <index name>, // optional, defaults to "default" "range": { "path": "<field-to-search>", "gt | gte": <value-to-search>, "lt | lte": <value-to-search>, "score": <score-options>, "doesNotAffect": "<facet-to-exclude>" | [<array-of-facets>] } }}

range usa os seguintes termos para construir uma consulta:

Campo
Tipo
Descrição
necessidade

gt ou gte

Data, número ou string BSON, ou objectId

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 no formato :ISODate.

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

  • Para campos ObjectId, o valor deve ser indexado como tipo de dados objectId ou mapeamentos dinâmicos devem ser definidos como true.

no

lt ou lte

Data, número ou string BSON, ou objectId

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 no formato :ISODate.

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

  • Para campos ObjectId, o valor deve ser indexado como tipo de dados objectId ou mapeamentos dinâmicos devem ser definidos como true.

no

path

cadeia de caracteres ou matriz de cadeias de caracteres

Campos indexados a serem pesquisados.

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.

Ao executar query de valores de array, o MongoDB Pesquisa atribui pontuações mais altas se mais valores na array corresponderem à query.

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

no

doesNotAffect

cadeia de caracteres ou matriz de cadeias de caracteres

Faceta ou lista de facetas a serem excluídos do novo cálculo de contagem com base nesta query. O valor deve ser um ou mais nomes de uma faceta definidos em $search.facets ou $searchMeta.facets. O operador usa as facetas especificadas para filtrar documentos para corresponder a essa query, mas não recalcula as contagens para eles. Para obter mais informações, consulte Facetas de seleção múltipla.

no

Os exemplos abaixo usam a coleção 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.

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

Para este exemplo, você pode utilizar mapeamentos estáticos ou dinâmicos para indexar o campo runtime na collection sample_mflix.movies. A query utiliza campos gte e lte para definir a faixa numérica para pesquisar.

Use uma das seguintes definições de índice:

A seguinte query pesquisa filmes com um tempo de duração maior ou igual a 2, e menor ou igual a 3. Inclui um estágio $limit para limitar a saída a 5 resultados e um estágio $project para excluir todos os campos, exceto title e runtime.

db.movies.aggregate([ { "$search": { "range": { "path": "runtime", "gte": 2, "lte": 3 } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1, "runtime": 1 } }])

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.

Use uma das seguintes definições de índice:

A consulta a seguir pesquisa filmes lançados entre 1 de janeiro de 2010 e 1 de janeiro de 2015. Ela inclui um estágio $limit para limitar a saída a 5 resultados e um estágio $project para excluir todos os campos, exceto title e released.

db.movies.aggregate([ { "$search": { "range": { "path": "released", "gt": ISODate("2010-01-01T00:00:00.000Z"), "lt": ISODate("2015-01-01T00:00:00.000Z") } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1, "released": 1 } }])

O exemplo a seguir usa o operador range para consultar um campo objectId na coleção sample_mflix.movies . Neste exemplo, você pode utilizar mapeamentos estáticos ou dinâmicos para indexar o campo do tipo objectId denominado _id na coleção.

Use uma das seguintes definições de índice:

O exemplo a seguir usa o operador range para fazer query no campo _id para um intervalo de valores objectId na coleção sample_mflix.movies.

db.movies.aggregate([ { "$search": { "range": { "path": "_id", "gte": ObjectId("573a1396f29313caabce4a9a"), "lte": ObjectId('573a1396f29313caabce4ae7') } } }, { "$project": { "_id": 1, "title": 1, "released": 1 } }])

O exemplo seguinte utiliza o operador range para consultar um campo de string na coleção sample_mflix.movies. Neste exemplo, você deve usar mapeamentos estáticos para indexar o campo chamado title na collection como tipo token do MongoDB Search.

A seguinte definição de índice denominada default indexa o campo title na collection movies como tipo MongoDB Search token:

{ "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. Ela inclui um estágio $limit para limitar a saída a 5 resultados e um estágio $project para excluir todos os campos, exceto title.

db.movies.aggregate([ { "$search": { "range": { "path": "title", "gt": "city", "lt": "country" } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1 } }])

A seguinte query pesquisa o campo funding_rounds.raised_amount na coleção sample_training.companies por valores maiores ou iguais a 500000 e menores ou iguais a 1000000. Ele usa o returnStoredSource: true e returnScope para recuperar e retornar os campos no array de objetos funding_rounds, que são armazenados em mongot. A query utiliza o índice de amostra do exemplo "Usar caminho relativo para origem armazenada".

➤ Tente isso no Search Playground. Os resultados no MongoDB Search Playground podem variar porque os dados no MongoDB Search Playground são menores do que a coleção de amostra usada no exemplo a seguir.

db.companies.aggregate([ { "$search": { "range": { "path": "funding_rounds.raised_amount", "gte": 500000, "lte": 1000000 }, "returnStoredSource": true, "returnScope": { "path": "funding_rounds" } } }, { "$limit": 5 }])

A seguinte query pesquisa filmes com um tempo de duração maior ou igual a 2, e menor ou igual a 3. A query usa o estágio $searchMeta para recuperar todos os filmes nos seguintes intervalos de anos que atendem aos critérios de pesquisa:

  • 1990, limite inferior inclusivo para este bucket

  • 2000, limite superior exclusivo para o bucket 1990 e limite inferior inclusivo para esse bucket

  • 2010, limite superior exclusivo para o bucket 2000 e limite inferior inclusivo para esse bucket

  • 2020, limite superior exclusivo para o bucket 2010

A consulta usa um índice chamado default que indexa dinamicamente todos os campos no namespace sample_mflix.movies .

db.movies.aggregate([ { "$searchMeta": { "facet": { "operator": { "range": { "path": "runtime", "gte": 2, "lte": 3 } }, "facets": { "yearFacet": { "type": "number", "path": "year", "boundaries": [1990, 2000, 2010, 2020 ] } } } } }])