Bases de datos nosql
1. Caso Práctico 1: Gestión de Usuarios en una Web
Supongamos que tenemos una aplicación donde los usuarios pueden registrarse y guardar información personal.
📌 Estructura de un usuario en MongoDB:
1{ 2 "nombre": "Ana Pérez", 3 "email": "ana@email.com", 4 "edad": 25, 5 "intereses": ["programación", "diseño"], 6 "fecha_registro": "2024-03-07T10:00:00Z" 7}
📌 Consultas útiles:
✔️ Mostrar todos los usuarios registrados
1db.usuarios.find()
✔️ Buscar usuarios interesados en "programación"
1db.usuarios.find({ intereses: "programación" })
✔️ Actualizar la edad de un usuario
1db.usuarios.updateOne({ email: "ana@email.com" }, { $set: { edad: 26 } })
✔️ Eliminar un usuario
1db.usuarios.deleteOne({ email: "ana@email.com" })
✅ Este ejemplo es útil para sitios web y redes sociales.
2. Caso Práctico 2: Análisis de Ventas en una Tienda
Imaginemos que tenemos una tienda en línea y queremos analizar las ventas.
📌 Ejemplo de una venta en MongoDB:
1{ 2 "cliente": "Carlos López", 3 "productos": [ 4 { "nombre": "Laptop", "precio": 1200, "cantidad": 1 }, 5 { "nombre": "Mouse", "precio": 25, "cantidad": 2 } 6 ], 7 "total": 1250, 8 "fecha": "2024-03-07T12:00:00Z" 9}
📌 Consultas útiles:
✔️ Mostrar todas las ventas
1db.ventas.find()
✔️ Calcular el total de ventas del mes
1db.ventas.aggregate([ 2 { $match: { fecha: { $gte: ISODate("2024-03-01T00:00:00Z") } } }, 3 { $group: { _id: null, totalVentas: { $sum: "$total" } } } 4])
✔️ Contar cuántas ventas se han realizado
1db.ventas.countDocuments()
✅ Ideal para analizar datos de comercio electrónico.
3. Caso Práctico 3: Búsquedas Avanzadas en una Aplicación
Si tenemos una aplicación con artículos o publicaciones, podemos hacer búsquedas avanzadas con índices de texto.
📌 Ejemplo de documento en la colección articulos
1{ 2 "titulo": "Cómo optimizar bases de datos documentales", 3 "contenido": "En este artículo aprenderás sobre índices, rendimiento y seguridad en MongoDB.", 4 "autor": "Juan Gómez", 5 "fecha": "2024-03-07T14:00:00Z" 6}
📌 Crear un índice de texto para búsquedas rápidas
1db.articulos.createIndex({ titulo: "text", contenido: "text" })
📌 Buscar artículos que contengan "MongoDB"
1db.articulos.find({ $text: { $search: "MongoDB" } })
✅ Muy útil para blogs, foros y plataformas de contenido.
4. Proyecto Final: Crear una API con MongoDB y Node.js
El proyecto consistirá en crear una API REST con Node.js y MongoDB para gestionar productos de una tienda.
📌 Pasos:
1️⃣ Instalar dependencias en un proyecto Node.js
1npm init -y 2npm install express mongodb dotenv
2️⃣ Configurar MongoDB en db.js
1const { MongoClient } = require("mongodb"); 2require("dotenv").config(); 3 4const client = new MongoClient(process.env.MONGO_URL); 5async function conectarDB() { 6 await client.connect(); 7 return client.db("tienda"); 8} 9 10module.exports = conectarDB;
3️⃣ Crear un servidor en server.js
1const express = require("express"); 2const conectarDB = require("./db"); 3 4const app = express(); 5app.use(express.json()); 6 7app.get("/productos", async (req, res) => { 8 const db = await conectarDB(); 9 const productos = await db.collection("productos").find().toArray(); 10 res.json(productos); 11}); 12 13app.listen(3000, () => console.log("Servidor en http://localhost:3000"));
4️⃣ Probar la API
Abrimos la terminal y ejecutamos:
1node server.js
Luego en el navegador visitamos:
👉 http://localhost:3000/productos
✅ ¡Felicidades! Has creado una API con MongoDB y Node.js. 🚀