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 и ограничениями БД.