Overview
En esta guía, aprenderá a consultar un índice de búsqueda de MongoDB y a usar la función de búsqueda avanzada de texto completo en sus aplicaciones de PyMongo. Puede consultar un índice de búsqueda mediante un $search etapas del pipeline de agregación.
Para obtener más información sobre la etapa $search del pipeline, consulte el $search guía en el manual del MongoDB Server.
Nota
Solo disponible en Atlas para MongoDB v4.2 y posteriores
El operador del pipeline de agregación $search está disponible únicamente para colecciones alojadas en clústeres MongoDB Atlas que ejecutan MongoDB v4.2 o posterior que estén cubiertos por un índice de MongoDB Search. Para obtener más información sobre la configuración requerida y la funcionalidad de este operador, consulta la documentación MongoDB Search.
Datos de muestra
Los ejemplos en esta guía utilizan la colección sample_mflix.movies de los conjuntos de datos de muestra de Atlas. Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta
Comience a utilizar PyMongo.
Cree un índice de búsqueda de MongoDB
Antes de poder realizar una búsqueda en una colección de Atlas, primero debe crear un índice de Búsqueda MongoDB en la colección. Un índice de Búsqueda de MongoDB es una estructura de datos que clasifica la información en un formato que se puede buscar. Para saber cómo crear un índice de búsqueda de MongoDB, consulta Búsqueda de MongoDB e índices de búsqueda vectorial.
Busca tus datos
Para usar la $search etapa de canalización de agregación, debe especificar un operador de consulta de MongoDB Search que indique el tipo de consulta que desea ejecutar. Opcionalmente, también puede especificar un recopilador que agrupe los resultados por valores o rangos. Para ver una tabla con todos los operadores y recopiladores disponibles con MongoDB Search, consulte Usar operadores y recopiladores en consultas de MongoDB Search.
El siguiente ejemplo utiliza el compound operador para combinar varios operadores en una sola consulta. Para obtener más información sobre el compound operador, consulte la guía de operadores compuestos en la documentación de MongoDB Atlas.
La query tiene los siguientes criterios de búsqueda:
El campo
genresno debe contenerComedy.El campo
titledebe contener la cadenaNew York.
La query también incluye las siguientes etapas:
$limitpara limitar la salida a 10 resultados.$project, para excluir todos los campos exceptotitley añadir un campo llamadoscore.
client = pymongo.MongoClient("<connection-string>") result = client["sample_mflix"]["movies"].aggregate([ { "$search": { "index": "pymongoindex", "compound": { "mustNot": [ { "text": { "query": [ "Comedy" ], "path": "genres" } } ], "must": [ { "text": { "query": [ "New York" ], "path": "title" } } ], } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } } ]) for i in result: print(i)
{'title': 'New York, New York', 'score': 6.786379814147949} {'title': 'New York', 'score': 6.258603096008301} {'title': 'New York Doll', 'score': 5.381444931030273} {'title': 'Escape from New York', 'score': 4.719935417175293} {'title': 'Autumn in New York', 'score': 4.719935417175293} {'title': 'Sleepless in New York', 'score': 4.719935417175293} {'title': 'Gangs of New York', 'score': 4.719935417175293} {'title': 'Sherlock Holmes in New York', 'score': 4.203253746032715} {'title': 'New York: A Documentary Film', 'score': 4.203253746032715} {'title': 'An Englishman in New York', 'score': 4.203253746032715}
Información Adicional
Para obtener más información sobre los operadores de búsqueda de MongoDB disponibles, consulte la guía Operadores y recopiladores en la documentación de MongoDB Atlas.
Para obtener más información sobre MongoDB Search y ver más ejemplos de consultas, consulta la Documentación de MongoDB Search.
Si deseas realizar búsquedas vectoriales en tus datos almacenados en Atlas, debes usar MongoDB Vector Search. Para obtener más información sobre MongoDB Vector Search, consulta la documentación de MongoDB Vector Search.