Bases de Datos MongoDB
MongoDB es una base de datos NoSQL diseñada para manejar datos no estructurados y semi-estructurados de manera eficiente. Utiliza un modelo basado en documentos, lo que la hace ideal para aplicaciones que requieren alta flexibilidad y escalabilidad.
Conceptos Clave
- Documentos: La unidad básica de datos, almacenados en formato BSON (similar a JSON).
- Colecciones: Agrupaciones de documentos similares.
- NoSQL: No utiliza tablas o esquemas predefinidos, ofreciendo flexibilidad en los datos.
- Consultas: Potentes y basadas en JSON.
- Escalabilidad: Compatible con particionamiento horizontal y réplicas.
Configuración de MongoDB con Docker
Instrucciones
Crear un contenedor de MongoDB con Docker:
Ejecuta el siguiente comando para iniciar un servidor MongoDB.
docker run --name mongodb-container -d -p 27017:27017 mongo:6.0
Parámetros:
- –name: Nombre del contenedor.
- -d: Ejecuta el contenedor en segundo plano.
- -p 27017:27017: Mapea el puerto del contenedor al puerto local.
- mongo:6.0: Imagen oficial de MongoDB.
Conectar a MongoDB desde un cliente (opcional):
Puedes usar herramientas como MongoDB Compass o Visual Studio Code con extensiones para MongoDB.
Ejemplos
Ejemplo 1: Conexión a MongoDB desde Python
Instala la librería pymongo:
pip install pymongo
Conecta a la base de datos:
from pymongo import MongoClient
= MongoClient("mongodb://localhost:27017/")
cliente = cliente["tienda"]
db print("Conexión exitosa a MongoDB")
En el ejemplo anterior, se establece una conexión a la base de datos MongoDB llamada tienda.
Ejemplo 2: Crear una colección e insertar documentos
= db["productos"]
coleccion = {"nombre": "Teclado", "precio": 49.99}
producto
coleccion.insert_one(producto)print("Documento insertado:", producto)
En este caso, se crea una colección llamada productos y se inserta un documento con nombre “Teclado” y precio 49.99.
Ejemplo 3: Consultar documentos
for producto in coleccion.find():
print(producto)
En este ejemplo, se recuperan todos los documentos de la colección productos y se imprimen en pantalla
Ejemplo 4: Actualizar documentos
coleccion.update_one("nombre": "Teclado"},
{"$set": {"precio": 39.99}}
{
)print("Precio actualizado")
En este caso, se actualiza el precio del producto “Teclado” a 39.99.
Ejemplo Práctico
Objetivo: Crear una base de datos MongoDB para gestionar productos, implementando operaciones de inserción, consulta, actualización y eliminación.
Descripción: Usaremos Docker para iniciar MongoDB y Python para manipular los datos almacenados en documentos dentro de una colección.
Instrucciones:
- Configura un contenedor MongoDB utilizando Docker.
- Conéctate a la base de datos desde Python.
- Realiza operaciones CRUD en una colección llamada productos.
Posible solución
Código:
from pymongo import MongoClient
# Conectar a MongoDB
def conectar():
= MongoClient("mongodb://localhost:27017/")
cliente return cliente["tienda"]
# Crear colección e insertar documento
def agregar_producto(nombre, precio):
= conectar()
db = db["productos"]
coleccion = {"nombre": nombre, "precio": precio}
producto
coleccion.insert_one(producto)print(f"Producto agregado: {producto}")
# Consultar todos los documentos
def listar_productos():
= conectar()
db = db["productos"]
coleccion print("Lista de productos:")
for producto in coleccion.find():
print(producto)
# Actualizar documento
def actualizar_producto(nombre, nuevo_precio):
= conectar()
db = db["productos"]
coleccion
coleccion.update_one("nombre": nombre},
{"$set": {"precio": nuevo_precio}}
{
)print(f"Producto '{nombre}' actualizado con precio {nuevo_precio}")
# Eliminar documento
def eliminar_producto(nombre):
= conectar()
db = db["productos"]
coleccion "nombre": nombre})
coleccion.delete_one({print(f"Producto '{nombre}' eliminado")
# Uso
"Monitor", 199.99)
agregar_producto("Mouse", 29.99)
agregar_producto(
listar_productos()"Monitor", 149.99)
actualizar_producto(
listar_productos()"Mouse")
eliminar_producto( listar_productos()
Conclusiones
En este tutorial, aprendimos a trabajar con bases de datos relacionales y NoSQL utilizando Python. Aprendimos a conectarnos a bases de datos PostgreSQL y MongoDB, y a realizar operaciones CRUD como inserción, consulta, actualización y eliminación de datos.