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

🔖 Справочник

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

Команды и операторы занятия

aggregate()

Запуск pipeline в mongosh.

db.bookings.aggregate([{ $group: { _id: "$vendor", total: { $sum: 1 } } }])

$match

Фильтрация документов в pipeline.

{ $match: { year: { $in: ["1980", "1981"] } } }

$group

Группировка документов по ключу _id.

{ $group: { _id: "$vendor", total: { $sum: 1 } } }

$sort

Сортировка результата pipeline.

{ $sort: { total: -1 } }

$limit

Ограничение числа документов.

{ $limit: 3 }

$project

Выбор и переименование полей.

{ $project: { _id: 0, title: 1, year: 1 } }

$avg

Среднее значение по группе.

{ $group: { _id: "$vendor", avg_mileage: { $avg: "$distance" } } }

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

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