Overview
En esta guía, puedes aprender cómo query un índice de MongoDB Search y utilizar la funcionalidad avanzada de búsqueda de texto completo en tus aplicaciones PyMongo. Puede query un índice de búsqueda utilizando 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 for 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
Comienza con 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 utilizar la etapa de canalización de agregación $search, debes especificar un operador del query MongoDB Search que indique el tipo de query que deseas ejecutar. También puedes especificar opcionalmente un recolector que agrupe los resultados por valores o rangos. Para ver una tabla de todos los operadores y recolectores disponibles con MongoDB Search, consulta Utiliza operadores y recolectores en consultas de MongoDB Search.
El siguiente ejemplo utiliza el operador compound para combinar varios operadores en una única query. Para aprender más sobre el compound operador, consulte la guía de operador compuesto 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 stringNew 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 MongoDB Search disponibles, consulta la guía Operadores y colectores 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.