Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

existe

Nesta página

  • Definição
  • Sintaxe
  • Opções
  • Comportamento de pontuação
  • Exemplos
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.

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}

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

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.

Você pode tentar os seguintes exemplos no Atlas Search Playground ou no seu cluster do Atlas.

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}

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).

As queries a seguir demonstram o operador exists nas queries do Atlas Search.

O exemplo a seguir pesquisa documentos que incluem um campo chamado type.

1db.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.

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.

1db.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.

O exemplo abaixo usa exists como parte de uma query composta.

1db.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.

Voltar

é igual a