javascript-mongoose

Modelado de datos en MongoDB con JavaScript Mongoose

Mongoose es una biblioteca de JavaScript que nos permite trabajar con MongoDB de manera estructurada pero rápida, mediante un enfoque basado en esquemas.

Nos proporciona una solución elegante para modelar los datos de nuestra aplicación y realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) con facilidad.

Mongoose se destaca por las siguientes características:

  • Modelado de esquemas: Define la estructura de nuestros documentos MongoDB mediante esquemas.
  • Validación: Valida los datos antes de guardarlos en la base de datos.
  • Consultas avanzadas: Realiza consultas complejas con facilidad.
  • Middleware: Utiliza middleware para realizar operaciones antes o después de eventos específicos.
  • Plugins: Extiende la funcionalidad mediante una amplia gama de plugins.

Instalación de Mongoose

Para comenzar a usar Mongoose en nuestras aplicaciones, primero debemos instalarlo. Si estamos utilizando npm, podemos hacerlo con el siguiente comando:

npm install mongoose

Cómo Usar Mongoose

Conexión a MongoDB

Primero, necesitamos conectarnos a una instancia de MongoDB.

const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/test');

Definición de esquemas y modelos

Con Mongoose, definimos la estructura de nuestros documentos mediante esquemas. Por ejemplo, vamos a ver cómo podemos definir un modelo para guardar Usuarios.

const userSchema = new mongoose.Schema({
    name: { type: String, required: true },    
    age: { type: Number, min: 0 }
  });
  
const User = mongoose.model('user', userSchema);

Esa es la sintaxis normal. Pero también tenemos una algo más concisa, sin tener que crear el Schema.

const Cat = mongoose.model('Cat', { name: String });

Creación de Documentos

Para crear un nuevo documento, utilizamos el modelo que hemos definido anteriormente.

const newUser = new User({ name: 'Luis' } );
newUser.save().then(() => console.log('Luis'));

Lectura de documentos

Podemos leer documentos de la base de datos utilizando métodos como find, findOne, findById, etc.

User.find({ name: 'Luis'})
    .then((items) => console.log(`${items}`));

Actualización de documentos

Para actualizar un documento, utilizamos métodos como updateOne, updateMany, findByIdAndUpdate, etc.

User.updateOne({ name: 'Luis'}, { age: '35'})
    .then((ev) => console.log(ev));

Eliminación de documentos

Podemos eliminar documentos de la base de datos utilizando métodos como deleteOne, deleteMany, findByIdAndDelete, etc.

User.deleteOne({ name: 'Luis'})
  .then(() => console.log('User deleted'))
  .catch((err) => console.log(err));