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

🔖 Справочник

📁 Блок: 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 в задаче по длительности.

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

sort()

Отсортировать документы по total.

db.sales.find().sort({ total: -1 }).limit(10)

$unwind

Развернуть reviews перед группировкой reviewer_id.

{ $unwind: "$reviews" }

$group

Посчитать отзывы или количество ресторанов по cuisine.

{ $group: { _id: "$cuisine", count: { $sum: 1 } } }

$lookup

Присоединить transactions к customers.

{ $lookup: { from: "transactions", localField: "accounts", foreignField: "account_id", as: "customer_transactions" } }

$geoWithin

Найти restaurants внутри Polygon Brighton Beach.

{ "address.coord": { $geoWithin: { $geometry: { type: "Polygon", coordinates: [...] } } } }

$out

Экспортировать top20 в новую коллекцию.

{ $out: { db: "ich_edit", coll: "top20youtube_name" } }

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

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