← К оглавлению занятия

⚠️ Ошибки

📁 Блок: MongoDB / практическая отработка ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя

⚡ Кратко: суть занятия

Первая часть практической отработки MongoDB строится вокруг aggregation pipeline.

$bucket распределяет документы по диапазонам: например цены жилья в Барселоне.

$unwind превращает каждый элемент массива reviews в отдельный документ.

$set и $unset помогают превратить вложенный объект отзыва в плоский документ.

$out записывает результат агрегации в новую коллекцию reviews.

$merge обновляет существующую коллекцию, когда нужно добавить вычисленные поля.

$map, $multiply и $sum позволяют посчитать total по массиву items в sales.

Топ-3 ошибки: забыть $match перед $bucket, использовать $out вместо $merge для обновления, неправильно обратиться к $$item внутри $map.

Типичные ошибки

$bucket без default

Симптом: Документы вне boundaries пропадают из результата.

Исправление: Для цен дороже 1000 нужен default: "EXPENSIVE".

$out вместо $merge

Симптом: Коллекция может быть перезаписана, когда требовалось обновление.

Исправление: Для добавления полей в существующие restaurants используйте $merge.

Неправильная переменная в $map

Симптом: total получается null.

Исправление: Внутри $map используйте $$item.price и $$item.quantity.

$unwind после $project без reviews

Симптом: Pipeline теряет массив отзывов.

Исправление: В $project оставьте reviews: 1 до $unwind.