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

✅ Решения

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

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

Summary session 19 повторяет практические стадии aggregation pipeline.

$bucket раскладывает документы по диапазонам, например цену жилья в Барселоне.

$match фильтрует документы, $project выбирает поля, $unwind разворачивает массив reviews.

$set добавляет поля, $unset удаляет лишнее, $out записывает новую коллекцию.

Практические задачи повторяют reviews, average score, total в sales, активного reviewer, популярные cuisines, $lookup и Brighton Beach.

Закрепляющий тест спрашивает use, find, выборку по _id и skip(5).

Разбор ДЗ 19 работает с ich.Spotify_Youtube: Danceability, Energy, Duration_ms, Album, Views, Stream и экспорт top20.

Топ-3 ошибки: путать $out и $merge, забыть $unwind перед отзывами, считать skip(5) фильтром по цифре 5.

Решения и разбор шагов

$bucket

Это стадия категоризации. Она получает groupBy, boundaries, default и output.

reviews

Фильтр reviews != [], затем $unwind, затем перенос полей отзыва в корень и $out в reviews.

$project/$set/$unset

$project формирует видимость полей, $set добавляет поля, $unset убирает исходные поля.

restaurants score

Разверните grades, сгруппируйте по ресторану или по bucket-диапазону score, посчитайте среднее.

sales total

$map возвращает массив сумм по item, $sum складывает массив в total.

active reviewer

$unwind reviews, $group по reviewer_id/name, $sort count desc, $limit 1.

cuisines

$group по cuisine и сортировка по count desc.

$lookup

from: transactions, localField: accounts, foreignField: account_id, as: transactions.

Тест

use выбирает базу, find возвращает документы, _id рекомендован для точной выборки, skip(5) пропускает первые 5 документов.