$bucket без default
Симптом: Документы вне boundaries пропадают из результата.
Исправление: Для цен дороже 1000 нужен default: "EXPENSIVE".
Первая часть практической отработки MongoDB строится вокруг aggregation pipeline.
$bucket распределяет документы по диапазонам: например цены жилья в Барселоне.
$unwind превращает каждый элемент массива reviews в отдельный документ.
$set и $unset помогают превратить вложенный объект отзыва в плоский документ.
$out записывает результат агрегации в новую коллекцию reviews.
$merge обновляет существующую коллекцию, когда нужно добавить вычисленные поля.
$map, $multiply и $sum позволяют посчитать total по массиву items в sales.
Топ-3 ошибки: забыть $match перед $bucket, использовать $out вместо $merge для обновления, неправильно обратиться к $$item внутри $map.
Симптом: Документы вне boundaries пропадают из результата.
Исправление: Для цен дороже 1000 нужен default: "EXPENSIVE".
Симптом: Коллекция может быть перезаписана, когда требовалось обновление.
Исправление: Для добавления полей в существующие restaurants используйте $merge.
Симптом: total получается null.
Исправление: Внутри $map используйте $$item.price и $$item.quantity.
Симптом: Pipeline теряет массив отзывов.
Исправление: В $project оставьте reviews: 1 до $unwind.