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

🔖 Справочник

📁 Блок: 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

Разложить документы по диапазонам.

{ $bucket: { groupBy: "$price", boundaries: [0, 50, 100, 1000], default: "EXPENSIVE" } }

$unwind

Развернуть массив reviews в отдельные документы.

{ $unwind: { path: "$reviews" } }

$set

Создать новые поля из reviews.

{ $set: { reviewer_name: "$reviews.reviewer_name" } }

$unset

Удалить исходное вложенное поле.

{ $unset: "reviews" }

$out

Записать результат в новую коллекцию.

{ $out: "reviews" }

$merge

Обновить существующие документы результатом pipeline.

{ $merge: { into: "restaurants", whenMatched: "merge" } }

$map

Пройти по массиву items и вернуть вычисленные значения.

{ $map: { input: "$items", as: "item", in: { $multiply: ["$$item.price", "$$item.quantity"] } } }

Справочники курса

Локальный каталог MongoDB: справочник MongoDB. SQL-операторы предыдущих блоков: справочник SQL.