intermediate
Schemas
Определяйте document shape, defaults, indexes, virtuals и nested structures с учетом MongoDB aggregate boundaries.
Схемы Mongoose задают форму документа: поля, типы, defaults, индексы, virtuals, timestamps и вложенные пути. Это моделирование на уровне приложения — не замена проектированию агрегатов MongoDB.
const orderSchema = new Schema({
customerId: { type: String, required: true, index: true },
status: { type: String, enum: ['pending', 'paid'], default: 'pending' },
items: [{ sku: String, qty: Number }],
}, { timestamps: true });
На интервью: embedding vs referencing, эволюция схемы, индексы, границы валидации и как выбор схемы формирует паттерны запросов.
Типовые ошибки: перенос реляционных привычек «таблица на сущность»; неограниченные массивы; отсутствие индексов на горячих фильтрах; схема как полная гарантия на уровне БД.
Компромисс — гибкое документное моделирование против предсказуемой производительности запросов и контроля роста.
Чеклист:
- Моделируйте границы агрегата в документе.
- Индексируйте реальные пути доступа.
- Планируйте рост документа и смену схемы.
- Согласуйте валидацию с API и ограничениями БД.