Nota
Esta página describe las capacidades de query de texto para implementaciones autogestionadas (no-Atlas). Para los datos alojados en MongoDB Atlas, MongoDB ofrece una solución mejorada de query de texto completo. Búsqueda Atlas y una solución de búsqueda vectorial, Búsqueda vectorial Atlas.
estructura de la query
Usa el $text operador del query para realizar búsquedas de texto en una colección con un índice de texto.
$text tokeniza la cadena de búsqueda utilizando espacios en blanco y la mayoría de los signos de puntuación como delimitadores, y realiza un OR lógico de todos esos tokens en la cadena de búsqueda.
Por ejemplo, podrías usar la siguiente query para encontrar todas las tiendas que contengan cualquier término de la lista "café", "tienda" y "java" en la stores colección:
db.stores.find( { $text: { $search: "java coffee shop" } } )
Usa el operador del query $meta para obtener y ordenar por la puntuación de relevancia de cada documento coincidente. Por ejemplo, para ordenar una lista de cafeterías en función de relevancia, ejecuta lo siguiente:
db.stores.find( { $text: { $search: "coffee shop cake" } }, { score: { $meta: "textScore" } } ).sort( { score: { $meta: "textScore" } } )
Para obtener más información sobre los operadores y, incluidas las restricciones y el comportamiento,$text $meta consulte:
$metaoperador de proyección
Pipeline de agregación
Cuando trabajes con pipeline de agregación, utiliza $match con una expresión $text para ejecutar una consulta de búsqueda de texto. Para ordenar los resultados según el puntaje de relevancia, use el $meta operador de agregación en la etapa $sort [1].
Para más información y ejemplos de $text en Operaciones de agregación pipelines, consulta $text en el pipeline de agregación en implementaciones autogestionadas.
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.
| [1] | El comportamiento y los requisitos del operador $meta de proyección <a class=\" \" href=\" \"> es diferente al del operador de agregación $meta <a class=\" \" href=\" \">. Para obtener detalles sobre el $meta operador de agregación <a class=\" \" href=\" \">, consulte la página de $meta referencia del operador de agregación <a class=\" \" href=\" \">. |