5 min read
•Question 13 of 27easyWhat is Mongoose and how do you use it?
MongoDB ODM for Node.js.
What You'll Learn
- What Mongoose is
- Defining schemas
- Basic operations
What is Mongoose?
Mongoose is an ODM (Object Document Mapper) for MongoDB and Node.js. It provides schema validation and a cleaner API.
Setup
code.jsJavaScript
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydb');Define Schema and Model
code.jsJavaScript
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
age: { type: Number, min: 0 },
role: { type: String, enum: ['user', 'admin'], default: 'user' },
createdAt: { type: Date, default: Date.now }
});
const User = mongoose.model('User', userSchema);CRUD Operations
code.jsJavaScript
// Create
const user = await User.create({ name: 'John', email: 'john@example.com' });
// or
const user = new User({ name: 'John', email: 'john@example.com' });
await user.save();
// Read
const users = await User.find({ role: 'admin' });
const user = await User.findById(id);
const user = await User.findOne({ email: 'john@example.com' });
// Update
await User.findByIdAndUpdate(id, { name: 'John Updated' }, { new: true });
await User.updateMany({ role: 'user' }, { $set: { active: true } });
// Delete
await User.findByIdAndDelete(id);
await User.deleteMany({ active: false });Query Helpers
code.jsJavaScript
const users = await User
.find({ age: { $gte: 18 } })
.select('name email')
.sort({ createdAt: -1 })
.limit(10)
.skip(20);