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.

in Operador

O operador in no MongoDB Search realiza uma pesquisa por uma array de valores BSON number, date, boolean, objectId, uuid ou string no caminho fornecido e retorna documentos em que o valor do campo é igual a qualquer valor na array especificada. Se o campo contiver uma array, o operador in selecionará os documentos cujo campo contém uma array que contém pelo menos um elemento que corresponde a qualquer valor na array especificada.

O operador in tem a seguinte sintaxe:

{ $search: { "index": <index name>, // optional, defaults to "default" "in": { "path": "<field-to-search>", "score": <options>, "value": <single-or-array-of-values-to-search>, "doesNotAffect": "<facet-to-exclude>" | [<array-of-facets>] } }}
Campo
Tipo
Descrição
necessidade

path

cadeia de caracteres ou matriz de cadeias de caracteres

Campos indexados a serem pesquisados. Você também pode especificar um caminho curinga para pesquisar.

Para pesquisar valores de string em um campo, você deve indexar o campo como o tipo de token do MongoDB Search.

Obrigatório

score

objeto

Pontuação para atribuir aos resultados do termo de pesquisa correspondente. Use uma das opções seguintes para modificar a pontuação:

  • 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 usando a expressão de função.

Opcional

value

Valor ou valores a serem pesquisados. O valor pode ser um único valor ou uma array de valores de apenas um dos tipos de BSON suportados e não pode ser uma mistura de tipos diferentes.

Para pesquisar valores de string em um campo, você deve indexar o campo como o tipo de token do MongoDB Search.

Obrigatório

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.

Opcional

Os exemplos a seguir usam o operador in para consultar coleções na coleção sample_analytics.customers. Se você carregar os dados de amostra em seu cluster e criar um índice de pesquisa do MongoDB chamado default que use mapeamentos estáticos na coleção, poderá executar as seguintes queries nas coleções.

A definição do índice de amostra especifica as seguintes ações para oferecer suporte às consultas do operador in nos campos indexados na coleção:

  • Indexe automaticamente todos os campos dinamicamente indexáveis na coleção.

  • Indexe estaticamente o campo name como o tipo de token e converte o texto no campo em letras minúsculas.

{ "mappings": { "index": "default", "dynamic": true, "fields": { "name": { "normalizer": "lowercase", "type": "token" } } }}

Para saber como criar um índice do MongoDB Search, consulte Gerenciar índices de pesquisa do MongoDB.

A query a seguir usa o operador in para o Atlas Search para o campo birthdate, que contém um único valor, para clientes que nasceram em determinadas datas. A consulta utiliza o estágio $project para:

  • Omita o campo _id nos resultados.

  • Inclua apenas os campos name e birthdate nos resultados.

db.customers.aggregate([ { "$search": { "in": { "path": "birthdate", "value": [ISODate("1977-03-02T02:20:31.000+00:00"), ISODate("1977-03-01T00:00:00.000+00:00"), ISODate("1977-05-06T21:57:35.000+00:00")] } } }, { "$project": { "_id": 0, "name": 1, "birthdate": 1 } }])
[ { name: 'Elizabeth Ray', birthdate: ISODate("1977-03-02T02:20:31.000Z") }, { name: 'Brad Cardenas', birthdate: ISODate("1977-05-06T21:57:35.000Z") }]

A pesquisa do MongoDB retorna dois documentos que correspondem às datas especificadas na query.

A seguinte query usa o operador in para pesquisar no campo active, que contém um valor booleano, para clientes que estão ativos. A query retorna o número de clientes ativos cuja data de nascimento cai nos seguintes intervalos:

  • 1970–01–01, incluindo o limite inferior para este bucket

  • 1980-01-01, limite superior exclusivo para o bucket 1970-01-01 e limite inferior inclusivo para este bucket

  • 1990-01-01, limite superior exclusivo para o bucket 1980-01-01 e limite inferior inclusivo para este bucket

  • 2000-01-01, limite superior exclusivo para o bucket 1990-01-01

db.customers.aggregate([ { "$searchMeta": { "facet": { "operator": { "in": { "path": "active", "value": null } }, "facets": { "birthdateFacet": { "type": "date", "path": "birthdate", "boundaries": [ISODate("1970-01-01"), ISODate("1980-01-01"), ISODate("1990-01-01"), ISODate("2000-01-01")], "default": "other" } } } } }])
[ { count: { lowerBound: Long('1') }, facet: { birthdateFacet: { buckets: [ { _id: ISODate('1970-01-01T00:00:00.000Z'), count: Long('1') }, { _id: ISODate('1980-01-01T00:00:00.000Z'), count: Long('0') }, { _id: ISODate('1990-01-01T00:00:00.000Z'), count: Long('0') } ] } } }]