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

⚠️ Ошибки

📁 Блок: 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 без понимания структуры результата.

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

$match не на той стадии

Если фильтруете исходные документы, ставьте $match до $group. Если фильтруете вычисленное avg_mileage, ставьте $match после $group.

Нет $ перед полем

_id: "vendor" создаст одну группу со строкой vendor. Нужно _id: "$vendor".

$sum без значения

Для подсчёта документов используется { $sum: 1 }. Для суммирования поля — { $sum: "$amount" }.

year как число

В imdb year может быть текстом. Для примера 1980-1990 источник использует строки.

countries как массив

Группировка по массиву countries группирует весь массив целиком. Для группировки по отдельным странам нужна дополнительная стадия, но она не дана в источнике.