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

📝 Задания

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

Задания из источника

1

Задание 1

В sample_airbnb.listingsAndReviews отсортировать жильё Барселоны по диапазонам цены за ночь: 0-50, 50-100, 100-1000, дороже 1000.

2

Задание 2

Создать коллекцию reviews из reviews массива: один документ — один отзыв.

3

Задание 3

В sample_restaurants.restaurants выяснить диапазоны средних оценок ресторанов по группам [0, 20, 40, 60, 80, 100].

4

Задание 4

Добавить в restaurants поля avg_score и number_of_reviews.

5

Задание 5

В sample_supplies.sales добавить поле total — итоговую сумму покупки по массиву items.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Что делает $bucket?

Вопрос 2

Зачем нужен $unwind в задаче reviews?

Вопрос 3

Когда в источнике используется $out?

Вопрос 4

Почему для restaurants выбран $merge?

Вопрос 5

Какая связка считает total покупки?

Вопрос 6

Что означает $$item внутри $map?