Definición
existsEl operador
existscomprueba 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.existssuele utilizarse como parte de un compound query en conjunto con otras cláusulas de búsqueda.
Sintaxis
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 }
opciones
exists utiliza los siguientes términos para construir una query:
Campo | Tipo | Descripción | ¿Requerido? |
|---|---|---|---|
| string | Campo indexado para buscar. | Sí |
| 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 |
Comportamiento de la puntuación
MongoDB Search asigna una puntuación constant de 1 a todos los documentos del conjunto de resultados. Puede personalizar la puntuación predeterminada de MongoDB Search con las score opciones. Para obtener más información sobre cómo modificar la puntuación predeterminada que devuelve MongoDB Search, consulte Modificar la puntuación.
Ejemplos
Puedes probar los siguientes ejemplos en MongoDB Search Playground o en tu clúster.
Colección de muestra
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 }
Índice de muestra
La fruit colección tiene un índice de búsqueda dinámico de MongoDB predeterminado que utiliza el analizador estándar predeterminado. El standard analizador convierte todas las palabras en minúsculas e ignora las palabras vacías comunes (,"the", "a", "and", etc.).
Queries de muestra
Las siguientes consultas demuestran el operador exists en las consultas de búsqueda de MongoDB.
Ejemplo básico
The following example searches for documents which include a field named type.
1 db.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 MongoDB Search Playground.
Ejemplo embebido
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.
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 }
➤ Pruebe esto en el patio de búsqueda de MongoDB.
Ejemplo compuesto
El siguiente ejemplo utiliza exists como parte de una query compuesta.
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 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.
➤ Pruebe esto en el patio de búsqueda de MongoDB.