Saltar al contenido

Buscar en MongoDB

Aprenderemos cómo recuperar datos de una base de datos MongoDB utilizando Python y el controlador PyMongo. Este tutorial cubre la conexión a un servidor MongoDB, la consulta de documentos individuales y múltiples, y el filtrado de resultados utilizando operadores de comparación y lógicos.

Introducción

Python se utiliza ampliamente para el procesamiento de datos y el desarrollo backend. MongoDB es una base de datos NoSQL popular que se integra perfectamente con Python para un almacenamiento y recuperación de datos eficientes. Este tutorial cubre cómo consultar y recuperar datos de MongoDB utilizando el controlador PyMongo.

Requisitos previos

Antes de profundizar en los detalles de la búsqueda de datos en MongoDB utilizando Python, hay algunos requisitos previos que deberías conocer:

  • Conceptos básicos de Python, incluidos tipos de datos, bucles y funciones.
  • Conocimiento de MongoDB y sus operaciones básicas.
  • El paquete pymongo instalado (pip install pymongo).

Conexión a MongoDB

El primer paso para buscar datos en MongoDB utilizando Python es establecer una conexión con el servidor MongoDB. MongoDB proporciona un controlador de Python que puedes usar para conectarte a la base de datos. Así es como puedes establecer una conexión:

Conexión a MongoDB en Python

python
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

En el código anterior, importamos el módulo pymongo y creamos un objeto MongoClient para establecer una conexión con el servidor MongoDB que se ejecuta en la máquina local. Luego, creamos una base de datos llamada "mydatabase" y una colección llamada "customers."

Población de la colección

Antes de consultar, insertemos algunos documentos de ejemplo para que los ejemplos funcionen:

python
mycol.insert_one({"name": "John", "age": 30})
mycol.insert_one({"name": "Jane", "age": 25})
mycol.insert_one({"name": "Doe", "age": 35})

Nota: PyMongo inyecta automáticamente un campo _id único en cada documento insertado si no se proporciona uno.

Búsqueda de datos

Ahora que hemos establecido una conexión con el servidor MongoDB, podemos buscar datos en la base de datos utilizando varios métodos proporcionados por el controlador PyMongo. Aquí hay algunos de los métodos más utilizados:

find_one()

El método find_one() se utiliza para recuperar el primer documento que coincida con los criterios de consulta. Así es como puedes usar el método find_one():

Buscar un documento en MongoDB en Python

python
x = mycol.find_one()
print(x)

Esto recupera el primer documento en la colección "customers" y lo imprime en la consola.

find()

El método find() se utiliza para recuperar todos los documentos que coincidan con los criterios de consulta. Así es como puedes usar el método find():

Buscar múltiples documentos en MongoDB en Python

python
for x in mycol.find():
  print(x)

Esto recupera todos los documentos en la colección "customers" y los imprime en la consola.

Consulta de datos

Además de los métodos anteriores, también podemos consultar datos utilizando varios operadores proporcionados por MongoDB. Aquí hay algunos de los operadores más utilizados:

  • Igual a: {"field": "value"}
  • Diferente de: {"field": {"$ne": "value"}}
  • Mayor que: {"field": {"$gt": "value"}}
  • Mayor o igual que: {"field": {"$gte": "value"}}
  • Menor que: {"field": {"$lt": "value"}}
  • Menor o igual que: {"field": {"$lte": "value"}}
  • En: {"field": {"$in": ["value1", "value2", "value3"]}}
  • No en: {"field": {"$nin": ["value1", "value2", "value3"]}}
  • Y: {"field1": "value1", "field2": "value2"} (Para condiciones simples, se prefiere el AND implícito. Usa $and solo para condiciones complejas, como aplicar diferentes operadores al mismo campo.)
python
# Implicit AND (simple conditions)
myquery = {"age": {"$gt": 25}, "name": "John"}

# $and operator (complex conditions, e.g., same field)
myquery = {"$and": [{"age": {"$gt": 25}}, {"age": {"$lt": 35}}]}
  • O: {"$or": [{"field1": "value1"}, {"field2": "value2"}]}

Aquí hay un ejemplo de cómo puedes usar el operador mayor que para recuperar todos los documentos donde el campo "age" es mayor que 25:

Consulta sobre una colección de MongoDB en Python

python
myquery = {"age": {"$gt": 25}}

results = mycol.find(myquery)

for x in results:
  print(x)

Esto crea una consulta para documentos donde el campo "age" es mayor que 25, la pasa a find() e imprime los resultados coincidentes.

Ordenación y limitación de resultados

Puedes ordenar los resultados usando sort() y limitar la cantidad de documentos devueltos usando limit(). También puedes usar skip() para paginar los resultados.

Ordenar y limitar en MongoDB

python
# Sort by age in ascending order, limit to 2 results
results = mycol.find().sort("age", 1).limit(2)
for x in results:
  print(x)

El segundo argumento en sort() es 1 para ascendente y -1 para descendente.

Saltar y limitar en MongoDB

python
# Skip the first 2 documents, then return the next 2
results = mycol.find().skip(2).limit(2)
for x in results:
  print(x)

Conclusión

En este artículo, discutimos cómo buscar datos en MongoDB utilizando Python. Comenzamos estableciendo una conexión con el servidor MongoDB, seguido de la recuperación de datos utilizando varios métodos proporcionados por el controlador PyMongo. También cubrimos cómo consultar datos utilizando diferentes operadores proporcionados por MongoDB. Siguiendo los pasos descritos en este artículo, ahora deberías poder buscar datos en MongoDB utilizando Python de manera eficiente.

Esperamos que hayas encontrado este artículo informativo y útil. Si tienes alguna pregunta o comentario, no dudes en dejar un comentario a continuación. ¡Gracias por leer!

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.