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

📖 Теория

📁 Блок: MongoDB / практикум по агрегации ⏱️ Время изучения: ~90 мин 🎯 Сложность: Практикум

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

Практикум 18 закрепляет агрегацию MongoDB на учебных коллекциях Ich.credit_cards, ich.bookings и ich.sample_training.

Для credit_cards нужно считать средние значения по категориям: образование, доход и семейный статус.

Самый частый уровень образования ищется через группировку, подсчёт, сортировку по убыванию и limit.

В bookings требуется найти среднее количество топлива, использованного за поездку.

В sample_training нужно анализировать города: население, штаты, средние значения и ZIP коды штата IL.

Главная конструкция занятия — aggregate() с этапами $group, $sort, $limit, $match и $project.

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

Разбор темы

Как читать задания практикума

Все задачи формулируются как аналитические вопросы: сначала выбрать коллекцию, затем определить поле группировки, поле расчёта и нужный агрегат.

Среднее значение

Для среднего возраста, кредитного лимита, топлива или населения используется $avg внутри $group. Группировка по null означает одно общее значение по всей коллекции.

Самое частое значение

Частотный анализ строится как $group с count: { $sum: 1 }, затем $sort по count: -1 и $limit: 1.

Топ значений

Для городов и ZIP кодов с наибольшим населением сначала отбирают нужные документы, потом сортируют по population по убыванию и ограничивают выдачу.

Compass и mongosh

В Compass эти же шаги добавляются как stages Aggregation Pipeline. В mongosh они передаются массивом в db.collection.aggregate([...]).

Проверить по документации: дополнительные практические формы MongoDB и поведение стадий агрегации могут зависеть от версии сервера, Atlas или Compass. Перед использованием в проекте сверяйте синтаксис с официальной документацией.