Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

exists (MongoDB Search Operador)

exists

El operador exists comprueba si existe en un documento una ruta a un nombre de campo indexado específico. Si el campo especificado existe pero no está indexado, el documento no se incluye en el conjunto de resultados. exists se utiliza a menudo como parte de una query compuesta en conjunto con otras cláusulas de búsqueda.

exists tiene la siguiente sintaxis:

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 utiliza los siguientes términos para construir una query:

Campo
Tipo
Descripción
¿Requerido?

path

string

Campo indexado para buscar.

score

Objeto

Puntuación para asignar a los resultados de búsqueda coincidentes. Para aprender más sobre las opciones para modificar el puntaje por defecto, consulta Calificar los Documentos en los Resultados.

no

MongoDB Search asigna una constant puntuación de 1 a todos los documentos en el conjunto de resultados. Puedes personalizar la puntuación de búsqueda de MongoDB por defecto utilizando las opciones score. Para saber más sobre la modificación de la puntuación por defecto devuelta por MongoDB Search, consulta Modificar la puntuación.

Puedes probar los siguientes ejemplos en MongoDB Search Playground o en tu clúster.

Los ejemplos de esta página utilizan una colección llamada fruit que contiene los siguientes 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}

La colección fruit cuenta con un índice de MongoDB Search dinámico por defecto que utiliza el analizador estándar por defecto. El analizador standard convierte en minúsculas todas las palabras y desestima las palabras vacías frecuentes ("the", "a", "and",, etc.).

Las siguientes consultas demuestran el operador exists en las consultas de búsqueda de MongoDB.

The following example searches for documents which include a field named type.

1db.fruit.aggregate([
2 {
3 $search: {
4 "exists": {
5 "path": "type"
6 }
7 }
8 }
9])

La anterior query devuelve los tres primeros documentos de la colección. El documento con _id: 4 no está incluido porque no tiene un campo type.

➤ Prueba esto en el Playground de MongoDB Search.

Use dot notation to search for embedded fields. The following example searches for documents which have a field named lemons embedded within a field named 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}

➤ Prueba esto en el Playground de MongoDB Search.

El siguiente ejemplo utiliza exists como parte de una query compuesta.

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 documentos tienen un campo type, y ambos incluyen el término de búsqueda apple. El documento con _id: 1 se muestra primero porque cumple la cláusula should.

➤ Prueba esto en el Playground de MongoDB Search.