{}const=>[]async()letfn</>var
DesarrolloSQL

NoSQL: Introducción a MongoDB para desarrolladores principiantes

Guía completa de MongoDB para desarrolladores: aprende los conceptos básicos de las bases de datos NoSQL, aprende a trabajar con documentos y colecciones, aprende consultas y agregación de datos. Los ejemplos prácticos en JavaScript y Node.js te ayudarán a empezar rápidamente a utilizar MongoDB en tus proyectos.

К

Kodik

Autor

8 min de lectura

¿Qué es NoSQL?

NoSQL (Not Only SQL) es un enfoque de diseño de bases de datos que difiere del modelo relacional tradicional. A diferencia de las bases de datos SQL con su estructura de tabla rígida, las bases de datos NoSQL ofrecen modelos de almacenamiento de información más flexibles.

Las principales ventajas de las bases de datos NoSQL incluyen un esquema de datos flexible, escalabilidad horizontal, alto rendimiento cuando se trabaja con grandes volúmenes de datos y la capacidad de trabajar de manera efectiva con datos no estructurados.

🔥 100.000+ estudiantes ya están con nosotros

¿Cansado de leer teoría?
¡Hora de programar!

Kodik — una app donde aprendes a programar con práctica. Mentor IA, lecciones interactivas, proyectos reales.

🤖 IA 24/7
🎓 Certificados
💰 Gratis
🚀 Empezar
Se unieron hoy

¿Por qué MongoDB?

MongoDB es una base de datos NoSQL orientada a documentos. Esto significa que los datos se almacenan como documentos similares a los objetos JSON. Este enfoque es especialmente útil para los desarrolladores web que trabajan con JavaScript, ya que la estructura de datos en MongoDB se corresponde de forma natural con los objetos del código.

MongoDB ha ganado popularidad gracias a varias características clave. En primer lugar, ofrece un esquema dinámico que facilita el cambio de la estructura de datos sin migraciones. En segundo lugar, MongoDB proporciona un alto rendimiento al leer y escribir datos. En tercer lugar, la base de datos se escala fácilmente de forma horizontal mediante la fragmentación. MongoDB también proporciona un potente lenguaje de consulta y admite la replicación para garantizar la tolerancia a fallos.

Conceptos básicos de MongoDB

Antes de empezar a trabajar con MongoDB, es importante entender los conceptos básicos que difieren de las bases de datos relacionales.

En MongoDB, se utilizan colecciones en lugar de tablas y documentos en lugar de filas. El documento es un conjunto de pares clave-valor, muy similar a un objeto JSON. Al mismo tiempo, los documentos de una colección pueden tener una estructura diferente, lo que proporciona flexibilidad al esquema.

Cada documento tiene un identificador único en el campo _id, que MongoDB genera automáticamente si no lo especificas tú mismo. MongoDB utiliza el formato BSON (JSON binario) para almacenar documentos, lo que garantiza la eficiencia y el soporte de tipos de datos adicionales, como Date o Binary.

Instalación de MongoDB

Empezar a trabajar con MongoDB es bastante sencillo. Puedes instalar la base de datos localmente en tu ordenador o usar el servicio en la nube MongoDB Atlas.

Para la instalación local, visita el sitio web oficial de MongoDB y descarga la versión para tu sistema operativo. En Windows, la instalación se realiza a través del instalador estándar, en macOS es conveniente usar Homebrew con el comando brew install mongodb-community, y en Linux la instalación se realiza a través del gestor de paquetes de tu distribución.

MongoDB Atlas proporciona un clúster en la nube gratuito que es ideal para la formación y los proyectos pequeños. Simplemente regístrate en el sitio web de MongoDB Atlas y crea tu primer clúster.

Primeros pasos con MongoDB

Después de la instalación, puede conectarse a MongoDB a través de la línea de comandos mongosh. Echemos un vistazo a las operaciones básicas.

La creación de una base de datos y una colección se produce implícitamente cuando se insertan los datos por primera vez. Para cambiar a la base de datos, utilice el comando use myDatabase. MongoDB creará automáticamente una base de datos al añadir el primer documento.

Para insertar un documento en una colección, se utiliza el método insertOne o insertMany. Por ejemplo, puedes añadir un usuario de la siguiente manera:

db.users.insertOne({
  name: "Alexey",
  email: "alexey@example.com",
  age: 28,
  skills: ["JavaScript", "Python", "MongoDB"]
})

La búsqueda de documentos se realiza mediante el método find. Para encontrar a todos los usuarios, usa db.users.find(), y para encontrar a un usuario específico, puedes aplicar una condición, por ejemplo, db.users.findOne({name: "Alexey"}).

Los documentos se actualizan mediante updateOne o updateMany. Por ejemplo, puedes añadir una habilidad a un usuario de la siguiente manera:

db.users.updateOne(
  {name: "Alexey"},
  {$push: {skills: "TypeScript"}}
)

Los documentos se eliminan a través de deleteOne o deleteMany. El comando db.users.deleteOne({name: "Alexey"}) eliminará el documento del usuario.

Trabajar con MongoDB en Node.js

Para aplicaciones reales, trabajarás con MongoDB a través de controladores u ODM (Object Document Mapper). La biblioteca más popular para Node.js es Mongoose.

Instala Mongoose con el comando npm install mongoose. A continuación, conéctate a la base de datos:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myapp')
  .then(() => console.log('Connected to MongoDB'))
  .catch(err => console.error('Connection error:', err));

Mongoose le permite definir esquemas para sus documentos, incluso a pesar de que MongoDB no requiere un esquema rígido:

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  age: Number,
  skills: [String],
  createdAt: {
    type: Date,
    default: Date.now
  }
});

const User = mongoose.model('User', userSchema);

Ahora puedes crear y guardar usuarios a través del modelo:

const newUser = new User({
  name: 'Maria',
  email: 'maria@example.com',
  age: 25,
  skills: ['Vue.js', 'CSS']
});

await newUser.save();

Consultas avanzadas

MongoDB proporciona un amplio conjunto de operadores para construir consultas complejas.

Los operadores de comparación permiten buscar documentos según las condiciones. Por ejemplo, puedes encontrar todos los usuarios mayores de 25 años de la siguiente manera: db.users.find({age: {$gt: 25}}). Los operadores disponibles son $eq (igual), $ne (no igual), $gt (mayor), $gte (mayor o igual), $lt (menor), $lte (menor o igual) y $in (valor en la matriz).

Los operadores lógicos ayudan a combinar condiciones. El operador $and permite combinar varias condiciones, $or realiza un O lógico y $not invierte la condición.

Los operadores de matriz son especialmente útiles cuando se trabaja con campos de matriz. Por ejemplo, $all comprueba la presencia de todos los elementos especificados, $elemMatch busca elementos de matriz según una condición compleja y $size comprueba el tamaño de la matriz.

Índices en MongoDB

Los índices son críticos para el rendimiento de las consultas. Sin índices, MongoDB escanea toda la colección para encontrar los documentos necesarios.

Puede crear un índice con el comando db.users.createIndex({email: 1}), donde 1 significa orden ascendente y -1 significa orden descendente. Debes crear índices para los campos que buscas con frecuencia.

MongoDB admite varios tipos de índices: índices individuales para un campo, índices compuestos para varios campos, índices de texto para búsqueda de texto completo e índices geoespaciales para trabajar con coordenadas.

Para ver los índices existentes, usa db.users.getIndexes(), y para eliminar un índice, usa db.users.dropIndex("index_name").

Agregación de datos

El marco de agregación en MongoDB permite realizar un procesamiento de datos complejo, similar a GROUP BY en SQL, pero mucho más potente.

La agregación funciona como un transportador, donde los datos pasan secuencialmente a través de las etapas de procesamiento. Por ejemplo, para calcular el número de usuarios por edad:

db.users.aggregate([
  {
    $group: {
      _id: "$age",
      count: {$sum: 1}
    }
  },
  {
    $sort: {count: -1}
  }
])

Las etapas principales de agregación incluyen $match para filtrar documentos, $group para agrupar y calcular, $sort para ordenar, $project para seleccionar y transformar campos, $limit y $skip para paginar, y $lookup para combinar datos de diferentes colecciones.

Cuándo usar MongoDB

MongoDB no es adecuado para todos los proyectos. Consideremos cuándo se justifica su uso.

MongoDB es ideal para aplicaciones con esquemas de datos que cambian rápidamente, sistemas de gestión de contenidos y blogs, aplicaciones en tiempo real, sistemas de catálogos y productos, aplicaciones de IoT con grandes flujos de datos y sistemas analíticos con grandes volúmenes de datos.

Sin embargo, MongoDB puede no ser la mejor opción para sistemas con múltiples relaciones entre entidades, donde las bases de datos SQL tradicionales con consultas JOIN son más eficientes. Además, para aplicaciones que requieren transacciones complejas con múltiples operaciones, las bases de datos relacionales clásicas pueden ser preferibles. En sistemas con una estructura de datos rígida que rara vez cambia, las ventajas de NoSQL pueden no ser tan notables.

Seguridad de MongoDB

La seguridad es fundamental para cualquier base de datos.

Habilite siempre la autenticación y cree usuarios con los permisos mínimos necesarios. No utilice una cuenta root para las aplicaciones. Configure las restricciones de red para que MongoDB solo sea accesible desde redes de confianza. Utilice SSL/TLS para cifrar las conexiones.

Realice copias de seguridad de sus datos con regularidad. MongoDB proporciona las herramientas mongodump y mongorestore para crear y restaurar copias de seguridad. En el entorno de producción, usa la replicación para garantizar la tolerancia a fallos.

Conclusión

MongoDB es una base de datos potente y flexible que es ideal para aplicaciones web modernas. El modelo de datos orientado a documentos se corresponde de forma natural con la estructura de los objetos en el código, y la ausencia de un esquema rígido permite iterar rápidamente y adaptarse a los requisitos cambiantes.

Empezar a trabajar con MongoDB es bastante sencillo, pero para usarlo de manera efectiva, es necesario comprender sus características y diferencias con respecto a las bases de datos relacionales. El diseño adecuado del esquema, el uso de índices y la comprensión de los patrones de consulta te ayudarán a crear una solución productiva y escalable.

Sigue explorando las capacidades de MongoDB, experimenta con la agregación, domina la replicación y la fragmentación. Esta base de datos ofrece muchas más posibilidades de las que hemos podido cubrir en el artículo introductorio, y un conocimiento profundo de MongoDB será una habilidad valiosa en tu arsenal de desarrollador.

Si quieres profundizar tus conocimientos de programación y aprender MongoDB con más detalle, únete a la plataforma educativa Kodik. Aquí encontrarás cursos estructurados en JavaScript, Python, bases de datos y otras tecnologías, y también podrás obtener soporte en Comunidad de Telegram desarrolladores. Aprender juntos es más fácil: ¡comparte experiencias, haz preguntas y desarrolla junto con personas de ideas afines!

🎯Deja de postergar

¿Te gustó el artículo?
¡Hora de practicar!

En Kodik no solo lees — escribes código de inmediato. Teoría + práctica = habilidades reales.

Práctica instantánea
🧠IA explica código
🏆Certificado

Sin registro • Sin tarjeta