Definição
existsO operador
existstesta se existe um caminho para um nome de campo indexado especificado em um documento. Se o campo especificado existir, mas não estiver indexado, o documento não será incluído nos resultados.existscostuma ser utilizado como parte de uma query composta em conjunto com outras cláusulas de pesquisa.
Sintaxe
exists tem a seguinte sintaxe:
{ $search: { "index": <index name>, // optional, defaults to "default" "exists": { "path": "<field-to-test-for>", "score": <options> } }}Opções
exists usa os seguintes termos para construir uma consulta:
Campo | Tipo | Descrição | Obrigatório? |
|---|---|---|---|
| string | Campo indexado para pesquisar. | sim |
| objeto | Pontuação a ser atribuída aos resultados de pesquisa correspondentes. Para saber mais sobre as opções para modificar a pontuação padrão, consulte Pontuação dos documentos nos resultados. | no |
Comportamento de pontuação
O MongoDB Search atribui uma pontuaçãoconstant de 1 para todos os documentos nos resultados. Você pode personalizar a pontuação padrão do MongoDB Search usando as opções score. Para saber mais sobre como modificar a pontuação padrão retornada pela MongoDB Search, consulte Modificar a pontuação.
Exemplos
Você pode tentar os exemplos a seguir no MongoDB Search Playground ou em seu cluster.
Collection de amostras
Os exemplos nesta página usam uma collection chamada fruit que contém os seguintes documentos:
{ "_id" : 1, "type" : "apple", "description" : "Apples come in several varieties, including Fuji, Granny Smith, and Honeycrisp."},{ "_id" : 2, "type" : "banana", "description" : "Bananas are usually sold in bunches of five or six."},{ "_id" : 3, "type": "apple", "description" : "Apple pie and apple cobbler are popular apple-based desserts."},{ "_id" : 4, "description" : "Types of citrus fruit include lemons, oranges, and grapefruit.", "quantities" : { "lemons": 200, "oranges": 240, "grapefruit": 160 }}Índice de amostra
A coleção fruit tem um índice dinâmico padrão do MongoDB Search que usa o analisador padrão. O analisador standard coloca todas as palavras em letras minúsculas e desconsidera as palavras de parada comuns ("the", "a", "and", etc.).
Exemplos de queries
As seguintes queries demonstram o operador exists nas queries do MongoDB Search.
Exemplo básico
O exemplo a seguir pesquisa documentos que incluem um campo chamado type.
db.fruit.aggregate([ { $search: { "exists": { "path": "type" } } }])A query acima retorna os três primeiros documentos da collection. O documento com _id: 4 não está incluído porque não tem um campo type.
➤ Tente fazer isso no playground do MongoDB Search.
Exemplo incorporado
Use a notação de ponto para pesquisar campos incorporados. O exemplo a seguir pesquisa documentos que tenham um campo chamado lemons incorporado a um campo chamado quantities.
db.fruit.aggregate([ { "$search": { "exists": { "path": "quantities.lemons" } } }])➤ Tente fazer isso no playground do MongoDB Search.
Exemplo composto
O exemplo abaixo usa exists como parte de uma query composta.
db.fruit.aggregate([ { $search: { "compound": { "must": [ { "exists": { "path": "type" } }, { "text": { "query": "apple", "path": "type" } }], "should": { "text": { "query": "fuji", "path": "description" } } } } }])Ambos os documentos têm um campo type e ambos incluem o termo de pesquisa apple. O documento com _id: 1 é retornado primeiro porque satisfaz a cláusula should.
➤ Tente fazer isso no playground do MongoDB Search.