Saltar a contenido

MongoDB

MongoDB es una base de datos NoSQL basada en documentos, lo que significa que almacena datos en formato JSON-like. Es ideal para manejar datos estructurados y no estructurados.

¿Por qué usarlo?

MongoDB se usará para almacenar y gestionar los datos de la aplicación, como usuarios, productos o pedidos. Es flexible y fácil de escalar, ideal para aplicaciones web modernas.

Recursos para aprender MongoDB

  • Documentación oficial de MongoDB: Proporciona información completa sobre conceptos fundamentales, modelado de datos, consultas, agregaciones y más.

  • Curso gratuito de MongoDB en YouTube: Busca cursos específicos en español que ofrezcan una introducción práctica a MongoDB. Algunos canales populares incluyen "freeCodeCamp" y "Academia Geek".

  • MongoDB Atlas: Configuración y uso: Guía sobre cómo configurar y utilizar MongoDB Atlas, la plataforma de base de datos como servicio (DBaaS) que permite gestionar bases de datos en la nube fácilmente.

  • MongoDB University: Ofrece cursos gratuitos sobre MongoDB, desde niveles básicos hasta avanzados, lo que permite a los estudiantes aprender a su propio ritmo.

  • Documentación sobre Mongoose: Mongoose es una biblioteca ODM (Object Data Modeling) para MongoDB y Node.js, que facilita la interacción con la base de datos desde aplicaciones Express.

Conceptos clave

  • Configuración de MongoDB Atlas.
  • Uso de Mongoose para modelar datos.
  • Creación de esquemas y validaciones.
  • Inserción, consulta y actualización de datos.
  • Seeding: cómo poblar la base de datos con datos iniciales.

Retos prácticos

Reto 1: Configurar MongoDB Atlas

  • Crea una cuenta en MongoDB Atlas.
  • Configura un clúster gratuito y crea una base de datos llamada appDB.
  • Añade una colección llamada productos y utiliza la herramienta de carga de datos para insertar al menos tres documentos con los campos:
    • nombre (String).
    • precio (Number).
    • categoria (String).

Ejemplo de documento:

{
  "nombre": "Producto A",
  "precio": 10.99,
  "categoria": "Electrónica"
}

Reto 2: Conectar Node.js a MongoDB

  • Usa Mongoose para conectar tu aplicación Node.js con MongoDB Atlas.
  • Define un esquema para la colección productos con los siguientes campos:
    • nombre: Requerido y debe ser una cadena.
    • precio: Requerido y debe ser un número.
    • categoria: Opcional y debe ser una cadena.

Pista: Código base

const mongoose = require('mongoose');

const productoSchema = new mongoose.Schema({
  nombre: { type: String, required: true },
  precio: { type: Number, required: true },
  categoria: { type: String },
});

const Producto = mongoose.model('Producto', productoSchema);

module.exports = Producto;

Reto 3: Insertar datos desde Node.js

  • Escribe un script en Node.js que utilice el modelo Producto para insertar un nuevo documento en la base de datos.
  • Inserta al menos un producto con los datos proporcionados por el usuario a través de la línea de comandos (usa process.argv).

Ejemplo de ejecución:

node insertarProducto.js "Producto B" 20.99 "Hogar"

Pista: Usa el siguiente fragmento como guía:

const Producto = require('./models/producto');

const nuevoProducto = new Producto({
  nombre: process.argv[2],
  precio: parseFloat(process.argv[3]),
  categoria: process.argv[4],
});

nuevoProducto.save()
  .then(() => console.log('Producto insertado con éxito'))
  .catch((error) => console.error('Error al insertar producto:', error));

Reto 4: Consultar datos

  • Escribe un script en Node.js que recupere todos los documentos de la colección productos y los imprima en la consola.
  • Filtra los productos por categoria usando un parámetro proporcionado desde la línea de comandos.

Ejemplo de ejecución:

node consultarProductos.js "Electrónica"

Pista: Usa el método find de Mongoose con un filtro dinámico.

Reto 5: Actualizar y eliminar datos

  • Crea un script que permita actualizar el precio de un producto basado en su nombre.
  • Crea otro script para eliminar un producto utilizando su nombre como criterio.

Pista: Usa los métodos findOneAndUpdate y findOneAndDelete de Mongoose.

Ejemplo de ejecución:

node actualizarPrecio.js "Producto A" 12.99 node eliminarProducto.js "Producto A"

Reto 6: Poblar la base de datos (Seeding)

  • Escribe un script de seeding que inserte automáticamente 5 productos en la colección productos.
  • Asegúrate de que los productos tengan valores aleatorios para los campos nombre, precio y categoria.

Pista: Usa un array de objetos y el método insertMany de Mongoose.

Estos retos te ayudarán a entender los conceptos fundamentales de MongoDB y a preparar tu base de datos para integrarla con el resto del stack MERN.