Volver a MongoDB Básico

Introducción a MongoDB

¿Qué es MongoDB?

MongoDB es una base de datos NoSQL orientada a documentos que almacena datos como documentos BSON flexibles (JSON Binario) organizados en colecciones (equivalentes a tablas). Destaca en:

  • Datos semi-estructurados o con esquema variable
  • Datos jerárquicos/anidados
  • Alto rendimiento de escritura
  • Escalado horizontal mediante sharding

Conceptos Clave

SQLMongoDB
Base de datosBase de datos
TablaColección
FilaDocumento
ColumnaCampo
ÍndiceÍndice
JOIN$lookup / doc anidado

Instalación con Docker

services: mongodb: image: mongo:7 environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password ports: - "27017:27017" volumes: - mongo_data:/data/db volumes: mongo_data:

Comandos Básicos de mongosh

// Conectar mongosh "mongodb://admin:password@localhost:27017" // Ver bases de datos y colecciones show dbs use miapp show collections // Insertar documentos db.usuarios.insertOne({ nombre: "Alicia", email: "[email protected]", edad: 30, direccion: { ciudad: "Ciudad de México", pais: "MX" }, etiquetas: ["desarrolladora", "admin"] }) db.usuarios.insertMany([ { nombre: "Roberto", email: "[email protected]", edad: 25 }, { nombre: "Carmen", email: "[email protected]", edad: 35 } ])

Operaciones CRUD

// Leer db.usuarios.find({ edad: { $gte: 28 } }) db.usuarios.findOne({ email: "[email protected]" }) // Actualizar — $set modifica sólo los campos indicados db.usuarios.updateOne( { email: "[email protected]" }, { $set: { edad: 31, "direccion.ciudad": "Guadalajara" } } ) // Upsert: insertar si no existe db.usuarios.updateOne( { email: "[email protected]" }, { $set: { nombre: "David", edad: 40 } }, { upsert: true } ) // Actualizar varios db.usuarios.updateMany( { pais: "MX" }, { $set: { moneda: "MXN" } } ) // Eliminar db.usuarios.deleteOne({ email: "[email protected]" }) db.usuarios.deleteMany({ edad: { $lt: 18 } })

Tipos de Datos

db.productos.insertOne({ _id: ObjectId(), nombre: "Monitor", precio: 299.99, stock: NumberInt(50), creado_en: new Date(), activo: true, descripcion: null, specs: { resolucion: "4K", tasa_refresco: NumberInt(144) }, etiquetas: ["pantalla", "periférico"] })

Comandos Útiles de mongosh

// Contar documentos db.usuarios.countDocuments({ edad: { $gte: 18 } }) // Valores únicos db.usuarios.distinct("direccion.pais") // Eliminar colección db.usuarios.drop() // Estadísticas de la colección db.usuarios.stats()