Docs Menu
Docs Home
/ /

MongoDB búsqueda

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 Etapa de canalización de agregación.

Para obtener más información sobre la etapa de canalización $search, consulte Guía de búsqueda en el manual del servidor MongoDB.

Nota

Solo disponible en Atlas para MongoDB v4.2 y versiones posteriores

El $search operador de canalización de agregación solo está disponible para colecciones alojadas en clústeres de MongoDB Atlas que ejecutan MongoDB v4.2 o posterior y que estén cubiertos por un índice de MongoDB Search. Para obtener más información sobre la configuración necesaria y la funcionalidad de este operador, consulte la documentación de MongoDB Search.

Los ejemplos de esta guía utilizan la colección de los sample_mflix.movies conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Comience a utilizar PyMongo.

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.

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 consulta tiene los siguientes criterios de búsqueda:

  • El campo genres no debe contener Comedy.

  • El campo title debe contener la cadena New York.

La consulta también incluye las siguientes etapas:

  • $limit, para limitar la salida a 10 resultados.

  • $project, para excluir todos los campos excepto title y agregar un campo score llamado.

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}

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, consulte la documentación de MongoDB Search.

Si desea realizar búsquedas vectoriales en sus datos almacenados en Atlas, debe usar MongoDB Vector Search. Para obtener más información sobre MongoDB Vector Search, consulte la documentación de MongoDB Vector Search.

Volver

Ejecute un comando de base de datos

En esta página