Проверяет знание основных ODM-библиотек для MongoDB в Node.js и умение выбрать подходящую для проекта.
MongoDB — документо-ориентированная база данных, и в Node.js с ней можно работать двумя основными способами: через низкоуровневый официальный драйвер или через ODM (Object Document Mapper), который добавляет слой абстракции над документами.
Это пакет, поддерживаемый самой MongoDB. Он даёт прямой доступ к коллекциям и методам вроде insertOne, find, updateMany. Никаких схем и валидации на уровне приложения — всё контролируется вручную.
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('shop');
const users = db.collection('users');
await users.insertOne({ name: 'Ann', age: 25 });
const found = await users.findOne({ name: 'Ann' });
console.log(found);
Mongoose описывает документы через схемы, добавляет типы, значения по умолчанию, валидацию, хуки (pre/post), виртуальные поля и populate для связей между коллекциями. Это удобно для приложений с чёткой доменной моделью.
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
age: { type: Number, min: 0 },
email: { type: String, unique: true }
});
const User = mongoose.model('User', userSchema);
await mongoose.connect('mongodb://localhost:27017/shop');
const user = await User.create({ name: 'Ann', age: 25 });
const adults = await User.find({ age: { $gte: 18 } });
Выбор зависит от задачи: если нужна гибкость и минимум абстракций — берите официальный драйвер; если важны схемы, валидация и удобная работа с моделями — Mongoose. Для TypeScript-проектов с акцентом на типобезопасность стоит присмотреться к Prisma.