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

📖 Теория

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

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

Вторая часть практической отработки продолжает задачи после вычисленного total.

Сначала нужно отсортировать sales по новому полю total и найти самые большие заказы.

Самый активный reviewer в Airbnb ищется через $unwind, $group, $sort и $limit.

Топ-5 популярных кухонь строится группировкой restaurants по cuisine.

$lookup объединяет customers и transactions по accounts/account_id.

Geo-запрос по Brighton Beach использует Polygon из neighborhoods и $geoWithin для restaurants.

Домашка 19 анализирует ich.Spotify_Youtube: Danceability, Energy, Duration_ms, Album, Views и Stream.

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

Разбор темы

Сортировка по вычисленному полю

После урока 73 поле total уже добавлено в sales, поэтому можно сортировать по total: -1 и смотреть самые крупные заказы.

Самый активный reviewer

Отзывы лежат массивом внутри listingsAndReviews. $unwind превращает отзывы в отдельные строки анализа, $group считает их по reviewer_id.

Топ кухонь

Кухня хранится в cuisine, поэтому популярность считается как количество ресторанов в каждой группе.

$lookup

$lookup выполняет left outer join с коллекцией той же базы и складывает совпавшие документы в массив as.

Geo-запрос Brighton Beach

В neighborhoods берётся Polygon района, затем restaurants фильтруются через address.coord и $geoWithin.

Spotify_Youtube

Домашка 19 требует сортировки, группировки, фильтрации compilation и экспорта двух топ-20 выборок в ich_edit.

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