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:
1 { 2 $search: { 3 "index": <index name>, // optional, defaults to "default" 4 "exists": { 5 "path": "<field-to-test-for>", 6 "score": <options> 7 } 8 } 9 }
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:
1 { 2 "_id" : 1, 3 "type" : "apple", 4 "description" : "Apples come in several varieties, including Fuji, Granny Smith, and Honeycrisp." 5 }, 6 { 7 "_id" : 2, 8 "type" : "banana", 9 "description" : "Bananas are usually sold in bunches of five or six." 10 }, 11 { "_id" : 3, 12 "type": "apple", 13 "description" : "Apple pie and apple cobbler are popular apple-based desserts." 14 }, 15 { "_id" : 4, 16 "description" : "Types of citrus fruit include lemons, oranges, and grapefruit.", 17 "quantities" : { 18 "lemons": 200, 19 "oranges": 240, 20 "grapefruit": 160 21 } 22 }
Í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.
1 db.fruit.aggregate([ 2 { 3 $search: { 4 "exists": { 5 "path": "type" 6 } 7 } 8 } 9 ])
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 de pesquisa do MongoDB.
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.
1 db.fruit.aggregate([ 2 { 3 "$search": { 4 "exists": { 5 "path": "quantities.lemons" 6 } 7 } 8 } 9 ])
1 { 2 "_id" : 4, 3 "description" : "Types of citrus fruit include lemons, oranges, and grapefruit.", 4 "quantities" : { 5 "lemons": 200, 6 "oranges": 240, 7 "grapefruit": 160 8 } 9 }
➤ Tente fazer isso no playground do MongoDB Search.
Exemplo composto
O exemplo abaixo usa exists como parte de uma query composta.
1 db.fruit.aggregate([ 2 { 3 $search: { 4 "compound": { 5 "must": [ 6 { 7 "exists": { 8 "path": "type" 9 } 10 }, 11 { 12 "text": { 13 "query": "apple", 14 "path": "type" 15 } 16 }], 17 "should": { 18 "text": { 19 "query": "fuji", 20 "path": "description" 21 } 22 } 23 } 24 } 25 } 26 ])
1 { 2 "_id" : 1, 3 "type" : "apple", 4 "description" : "Apples come in several varieties, including Fuji, Granny Smith, and Honeycrisp." 5 } 6 { 7 "_id" : 3, 8 "type" : "apple", 9 "description" : "Apple pie and apple cobbler are popular apple-based desserts." 10 }
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.