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.
Para obtener más información sobre Mongoose, podéis visitar el sitio oficial de Mongoose, consultar la documentación de Mongoose o explorar el repositorio en GitHub.
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));