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

📝 Задания

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

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

Занятие 62 вводит агрегацию MongoDB как цепочку стадий.

Aggregation Pipeline передаёт документы от одной стадии к следующей.

$match фильтрует, $group группирует, $sort сортирует, $skip пропускает, $limit ограничивает, $project выбирает поля.

В $group ключ группировки записывается в _id.

$sum: 1 считает документы в группе.

$avg, $max, $min, $round, $first и $last считают значения внутри групп.

Compass позволяет собирать стадии визуально и копировать массив pipeline из квадратных скобок.

Топ-3 ошибки: фильтровать после группировки не тем полем, забыть знак $ перед полем, группировать массив countries без понимания структуры результата.

Задания для закрепления из источника

1

Задание 1

Сгруппировать коллекцию ich.bookings по vendor.

2

Задание 2

Найти средний distance с разбивкой по vendor.

3

Задание 3

Найти vendor, у которого средний distance больше 2000.

4

Задание 4

В ich.imdb сгруппировать количество фильмов по годам.

5

Задание 5

В ich.imdb сгруппировать количество фильмов по годам между 1980 и 1990 и отсортировать по году.

6

Задание 6

Найти 3 самых популярных страны из списка всех фильмов.

7

Задание 7

Сравнить, где в этих задачах нужен $match до $group, а где после $group.

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

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

Вопрос 1

Что такое Aggregation Pipeline?

Вопрос 2

Какая стадия фильтрует документы?

Вопрос 3

Где задаётся ключ группировки?

Вопрос 4

Что делает $sum: 1?

Вопрос 5

Когда $match ставят после $group?

Вопрос 6

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

Вопрос 7

Почему годы 1980-1990 перечислены строками?