existe
Definição
exists
O operador
exists
testa 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.exists
costuma 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? |
---|---|---|---|
path | string | Campo indexado para pesquisar. | sim |
score | 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 Atlas Search atribui uma pontuação constant
de 1
para todos os documentos nos resultados. Você pode personalizar a pontuação padrão do Atlas Search usando as opções score
. Para saber mais sobre como modificar a pontuação padrão retornada pelo Atlas Search, consulte Modificar a pontuação.
Exemplos
Você pode tentar os seguintes exemplos no Atlas Search Playground ou no seu cluster do Atlas.
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 padrão do Atlas Search dinâmico que usa o analisador padrão. O analisador standard
coloca todas as palavras em letras minúsculas e desconsidera palavras vazias comuns ("the", "a", "and",
etc).
Exemplos de queries
As queries a seguir demonstram o operador exists
nas queries do Atlas 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 Atlas Search Playground.
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 }
➤ Experimente isso no Atlas Search Playground.
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
.
➤ Experimente isso no Atlas Search Playground.