MONGODB DESDE CERO: APRENDER BASES DE DATOS NOSQL SIN PROGRAMAR

MongoDB se ha convertido en una de las bases de datos más populares del mundo, especialmente entre quienes buscan flexibilidad, escalabilidad y facilidad de uso. A diferencia de las bases de datos relacionales tradicionales, como MySQL o PostgreSQL, MongoDB trabaja con documentos en lugar de tablas y filas. Esto la hace ideal para aplicaciones modernas, prototipos rápidos y proyectos donde la estructura de los datos puede cambiar con el tiempo.
Con MongoDB se puede trabajar desde la consola oficial de MongoDB llamada mongosh o con la herramienta gráfica MongoDB Compass.

Qué es realmente MongoDB?

MongoDB es una base de datos NoSQL orientada a documentos. En lugar de organizar la información en tablas rígidas, guarda los datos en documentos similares a JSON, técnicamente BSON. Esta es la equivalencia más importante que se debe conocer:
  • Una base de datos en MongoDB es equivalente a una base de datos en SQL.
  • Una colección equivale aproximadamente a una tabla.
  • Un documento equivale a una fila o registro.
  • Un campo equivale a una columna.
La gran ventaja es que los documentos de una misma colección no tienen por qué tener exactamente la misma estructura. Se pueden añadir o quitar campos según se necesites, lo que da mucha flexibilidad.

Conectarse a MongoDB

Una vez que MongoDB está instalado y en funcionamiento, abrir una terminal y escribe:

mongosh
Si todo está correcto, se mostraá un mensaje indicando que te has conectado correctamente. A partir de aquí ya se puede empezar a trabajar.

Navegación básica

Estos son los comandos esenciales para moverse por el sistema:
  • "show dbs" → Muestra todas las bases de datos existentes.
  • "use nombre_de_la_base" → Cambia a una base de datos, si no existe, la crea al insertar el primer documento.
  • "show collections" → Lista las colecciones de la base de datos actual.
  • "db" → Indica en qué base de datos con la que se está trabajando en ese momento.
Por ejemplo, para empezar a trabajar con una base de datos de prueba se puede escribir:

use tienda

Crear e insertar datos

Para guardar información utilizar los métodos de inserción.

Insertar un solo documento

db.productos.insertOne({
  nombre: "Portátil",
  precio: 899,
  stock: 15,
  categoria: "Electrónica"
})

Insertar varios documentos a la vez

db.productos.insertMany([
  { nombre: "Ratón", precio: 25, stock: 100, categoria: "Electrónica" },
  { nombre: "Teclado", precio: 45, stock: 50, categoria: "Electrónica" },
  { nombre: "Monitor", precio: 199, stock: 30, categoria: "Electrónica" }
])

Consultar información

La consulta más básica es ver todos los documentos de una colección:

db.productos.find()
Para verlos de forma más legible:

db.productos.find().pretty()
También se pueden filtrar resultados. Por ejemplo, buscar solo los productos de electrónica:

db.productos.find({ categoria: "Electrónica" })
O aplicar condiciones más complejas:

// Productos con precio mayor a 50
db.productos.find({ precio: { $gt: 50 } })

// Productos con stock menor o igual a 30
db.productos.find({ stock: { $lte: 30 } })
Otros operadores muy útiles son "$gte" (mayor o igual), "$lt" (menor que), "$in" (está en un conjunto) y "$or" (condiciones alternativas). Además se puede ordenar y limitar resultados:

db.productos.find().sort({ precio: -1 }).limit(5)

Actualizar y eliminar documentos

Para modificar un documento

db.productos.updateOne(
  { nombre: "Ratón" },
  { $set: { precio: 29 } }
)

Para actualizar varios a la vez

db.productos.updateMany(
  { categoria: "Electrónica" },
  { $inc: { stock: 5 } }
)

Para eliminar

db.productos.deleteOne({ nombre: "Teclado" })
db.productos.deleteMany({ stock: { $lt: 10 } })

Mejorar el rendimiento con índices

Al igual que en las bases de datos relacionales, los índices aceleran las búsquedas. Se puede crear un índice fácilmente:

db.productos.createIndex({ nombre: 1 })
O un índice compuesto:

db.productos.createIndex({ categoria: 1, precio: -1 })

Agregaciones: análisis de datos

MongoDB permite realizar cálculos y resúmenes de datos mediante el pipeline de agregación. Un ejemplo sencillo para obtener el precio medio por categoría sería:

db.productos.aggregate([
  {
    $group: {
      _id: "$categoria",
      promedioPrecio: { $avg: "$precio" },
      totalProductos: { $sum: 1 }
    }
  }
])