Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Búsqueda de texto
/ / /

$text en la pipeline de agregación en implementaciones autogestionadas

Nota

Esta página describe las funciones de consulta de texto para implementaciones autogestionadas (no Atlas). Para los datos alojados en MongoDB Atlas, MongoDB ofrece una solución mejorada de consulta de texto completo, Atlas Search, y una solución de búsqueda vectorial, Atlas Vector Search.

En la cadena de agregación, la búsqueda de texto está disponible mediante el uso de El operador del query $text en la etapa $match.

Para conocer las $text restricciones generales del operador,consulte restricciones del operador.

Además, la búsqueda de texto en el proceso de agregación tiene las siguientes restricciones:

  • La etapa $match que incluye un $text debe ser la primera etapa en el pipeline.

  • Un operador $text solo puede ocurrir una vez en la etapa.

  • La expresión del Operador $text no puede aparecer en $or ni en $not.

  • $text, por defecto, no devuelve los documentos coincidentes en el orden de las puntuaciones de coincidencia. Para ordenar por puntuación descendente, utiliza la expresión de agregación $meta en la etapa $sort.

El $text operador asigna una puntuación a cada documento resultante. Esta puntuación representa la relevancia de un documento para una consulta determinada. Puede formar parte de una especificación de canalización, así como de la expresión de proyección.$sort La { $meta: "textScore" } expresión proporciona información sobre el procesamiento de la $text operación.$meta Consulte para obtener más información sobre cómo acceder a la puntuación para la proyección o la ordenación.

Los metadatos solo están disponibles después de la etapa $match que incluye la operación $text.

Los siguientes ejemplos asumen una colección articles que tiene un índice de texto en el campo subject:

db.articles.createIndex( { subject: "text" } )

La siguiente agregación busca el término cake en la etapa y calcula el $match total views para los documentos coincidentes en la $group etapa.

db.articles.aggregate(
[
{ $match: { $text: { $search: "cake" } } },
{ $group: { _id: null, views: { $sum: "$views" } } }
]
)

Para ordenar por el puntaje de búsqueda de texto, incluya una expresión {$meta: "textScore"} en la etapa $sort . El siguiente ejemplo coincide con ya sea el término cake o tea, ordena por el textScore en orden descendente y devuelve solo el campo title en el conjunto de resultados.

db.articles.aggregate(
[
{ $match: { $text: { $search: "cake tea" } } },
{ $sort: { score: { $meta: "textScore" } } },
{ $project: { title: 1, _id: 0 } }
]
)

Los metadatos especificados determinan el orden de clasificación. Por ejemplo, los metadatos "textScore" clasifican en orden descendente. Consulta $meta para obtener más información sobre los metadatos, así como un ejemplo de anular el orden de clasificación por defecto de los metadatos.

Los "textScore" metadatos están disponibles para proyecciones, ordenaciones y condiciones posteriores a la etapa que incluye $match la $text operación.

El siguiente ejemplo coincide con el término cake tea title o,score proyecta los campos y y luego devuelve solo aquellos documentos con un score mayor 1.0 que.

db.articles.aggregate(
[
{ $match: { $text: { $search: "cake tea" } } },
{ $project: { title: 1, _id: 0, score: { $meta: "textScore" } } },
{ $match: { score: { $gt: 1.0 } } }
]
)

La siguiente agregación busca en español documentos que contienen el término saber pero no el término claro en la etapa $match y calcula el total de views para los documentos coincidentes en la etapa $group.

db.articles.aggregate(
[
{ $match: { $text: { $search: "saber -claro", $language: "es" } } },
{ $group: { _id: null, views: { $sum: "$views" } } }
]
)

Para los datos alojados en MongoDB Atlas, Atlas Search proporciona la etapa de agregación $search para realizar una búsqueda de texto completo en sus colecciones.

Volver

$text

En esta página