Base de datos mongodb
1. Qué es MongoDB? #
MongoDB es una base de datos NoSQL orientada a documentos, lo que significa que almacena datos en un formato similar a JSON, pero dentro de documentos BSON (Binary JSON). A diferencia de las bases de datos SQL tradicionales, MongoDB no utiliza tablas y filas, sino documentos y colecciones. Es una opción popular para aplicaciones que requieren flexibilidad en el manejo de datos estructurados o semiestructurados.
2. Por qué usar MongoDB con Python? #
- Flexibilidad: Puedes almacenar documentos con estructuras variadas sin la rigidez de un esquema fijo.
- Escalabilidad: Es fácil de escalar, tanto horizontal como verticalmente.
- Integración: Python se integra bien con MongoDB a través de bibliotecas como
pymongo.
3. Conectarse a MongoDB desde Python #
Para conectarte a MongoDB desde Python, puedes usar la biblioteca pymongo. Si no la tienes instalada, puedes instalarla usando pip:
1pip install pymongo
4. Paso 1: Conectar a la base de datos #
Primero, necesitas conectarte a un servidor MongoDB. Si estás usando un servidor local, la conexión se hace a localhost en el puerto 27017 (el puerto predeterminado de MongoDB).
1from pymongo import MongoClient 2 3# Conectar al servidor de MongoDB 4cliente = MongoClient("mongodb://localhost:27017/") 5 6# Seleccionar o crear la base de datos 7db = cliente["mi_base_de_datos"] 8 9print("Conexión a MongoDB establecida.")
- ¿Qué hace este código?:
- Conecta a un servidor MongoDB local.
- Selecciona (o crea, si no existe) una base de datos llamada
mi_base_de_datos.
- Resultado en pantalla:
Conexión a MongoDB establecida.
5. Paso 2: Crear una colección e insertar documentos #
En MongoDB, los datos se almacenan en colecciones (similar a las tablas en bases de datos SQL), y cada registro es un documento (similar a una fila).
1# Seleccionar o crear una colección 2coleccion = db["usuarios"] 3 4# Insertar un documento en la colección 5usuario = {"nombre": "Ana", "edad": 30, "email": "ana@example.com"} 6resultado = coleccion.insert_one(usuario) 7 8print(f"Documento insertado con id: {resultado.inserted_id}")
- ¿Qué hace este código?:
- Selecciona o crea una colección llamada
usuarios. - Inserta un documento en la colección con los datos de un usuario.
- Muestra el ID del documento insertado.
- Selecciona o crea una colección llamada
- Resultado en pantalla:
Documento insertado con id: 60a7d4b9a0c3c8e123456789
6. Paso 3: Consultar documentos #
Puedes consultar documentos en una colección utilizando varios métodos de consulta.
1# Consultar un documento en la colección 2usuario = coleccion.find_one({"nombre": "Ana"}) 3print(f"Usuario encontrado: {usuario}") 4 5# Consultar todos los documentos 6usuarios = coleccion.find() 7print("Todos los usuarios en la base de datos:") 8for usuario in usuarios: 9 print(usuario)
- ¿Qué hace este código?:
- Usa
find_onepara encontrar un documento dondenombresea "Ana". - Usa
findpara obtener todos los documentos en la colecciónusuarios. - Muestra cada documento encontrado.
- Usa
- Resultado en pantalla:
Usuario encontrado: {'_id': ObjectId('60a7d4b9a0c3c8e123456789'), 'nombre': 'Ana', 'edad': 30, 'email': 'ana@example.com'} Todos los usuarios en la base de datos: {'_id': ObjectId('60a7d4b9a0c3c8e123456789'), 'nombre': 'Ana', 'edad': 30, 'email': 'ana@example.com'}
7. Paso 4: Actualizar documentos #
Puedes actualizar documentos utilizando el método update_one o update_many.
1# Actualizar un documento en la colección 2resultado = coleccion.update_one( 3 {"nombre": "Ana"}, 4 {"$set": {"edad": 31}} 5) 6 7print(f"Documentos modificados: {resultado.modified_count}")
- ¿Qué hace este código?:
- Actualiza el documento donde
nombrees "Ana", cambiandoedada 31. - Muestra cuántos documentos fueron modificados.
- Actualiza el documento donde
- Resultado en pantalla:
Documentos modificados: 1
8. Paso 5: Eliminar documentos #
Puedes eliminar documentos de la colección utilizando delete_one o delete_many.
1# Eliminar un documento de la colección 2resultado = coleccion.delete_one({"nombre": "Ana"}) 3print(f"Documentos eliminados: {resultado.deleted_count}")
- ¿Qué hace este código?:
- Elimina el documento donde
nombrees "Ana". - Muestra cuántos documentos fueron eliminados.
- Elimina el documento donde
- Resultado en pantalla:
Documentos eliminados: 1
9. Paso 6: Cerrar la conexión #
Es una buena práctica cerrar la conexión a la base de datos cuando hayas terminado.
1# Cerrar la conexión 2cliente.close() 3print("Conexión a MongoDB cerrada.")
- Resultado en pantalla:
Conexión a MongoDB cerrada.
Resumen del tema
Conceptos clave #
- Modelo NoSQL Documental: MongoDB almacena datos en colecciones de documentos JSON/BSON flexibles y dinámicos sin esquema rígido previo.
- Cliente
pymongo: biblioteca estándar de conexión cliente para interactuar con clústeres e instancias MongoDB (MongoClient). - Operaciones CRUD Principales:
- Inserción:
.insert_one(doc),.insert_many(docs). - Consulta:
.find_one(filtro),.find(filtro). - Actualización:
.update_one(filtro, {"$set": {...}}),.update_many(...). - Eliminación:
.delete_one(filtro),.delete_many(filtro).
- Inserción:
Qué debes recordar #
Usa pymongo para conectar Python con MongoDB, trabajando con documentos estructurados como diccionarios mediante operaciones .insert_one(), .find(), .update_one() y .delete_one().