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. 🚀