advanced

Population

Разрешайте referenced documents, следя за query count, projection, consistency и тем, не проще ли embedding.

Population подставляет документы из других коллекций вместо сохранённых ObjectId через дополнительные запросы. Удобно для ссылок; рискованно для числа запросов и over-fetch.

					await Order.find()
  .populate({ path: 'customerId', select: 'name email' })
  .lean();
				

На интервью: сравните population с embedding, aggregation `$lookup`, ручным batching, проекциями и lean. Кардинальность и проверки владения.

Типовые ошибки: глубокие цепочки population; MongoDB «как реляционная БД»; нет проекций и auth на связанных документах.

Компромисс — эргономика разработки против явного проектирования запросов.

Чеклист:

  • Проверяйте кардинальность перед populate.
  • Ограничивайте проецируемые поля.
  • Предпочитайте embedding при ясном владении агрегатом.
  • Считайте запросы на endpoint.