Definición
existsEl operador
existscomprueba si existe una ruta a un nombre de campo indexado específico en un documento. Si el campo especificado existe, pero no está indexado, el documento no se incluye en el conjunto de resultados.existsse utiliza a menudo como parte de un consulta compuesta junto 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 consulta:
Campo | Tipo | Descripción | ¿Obligatorio? |
|---|---|---|---|
| string | Campo indexado para buscar. | sí |
| Objeto | Puntuación para asignar a los resultados de búsqueda coincidentes. Para obtener más información sobre las opciones para modificar la puntuación predeterminada, consulte Puntuar los documentos en los resultados. | no |
Comportamiento de 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 Zona de juegos de búsqueda de MongoDB.
Ejemplo incrustado
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 consulta 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 type campo e incluyen el término de apple búsqueda. El documento con _id: 1 se devuelve primero porque cumple la should cláusula.
➤ Pruebe esto en el patio de búsqueda de MongoDB.