aggregate()
Запуск pipeline в mongosh.
db.bookings.aggregate([{ $group: { _id: "$vendor", total: { $sum: 1 } } }])
Занятие 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.