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.