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

🔖 Справочник

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

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

Практикум 19 работает с собственной копией коллекции UK_used_cars.

Сначала нужно экспортировать ich.UK_used_cars или импортировать JSON из GitHub в ich_edit с личным суффиксом.

Базовые задачи проверяют производителей: список марок, максимум документов и распределение по transmission.

Для среднего пробега по производителям используется $group с $avg и счётчиком документов.

mpg переводится в l/100km формулой 282.481 / mpg и сохраняется как новое поле.

$merge нужен, чтобы записать вычисленное поле обратно в существующую коллекцию.

$bucket распределяет дизельные авто по диапазонам цены до 20000, 20000-30000, 30000-40000, 40000-60000 и выше 60000.

Топ-3 ошибки: работать в общей коллекции без копии, делить mpg на 282.481 вместо обратной формулы, забыть readable labels для bucket-категорий.

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

distinct

Быстро получить уникальные значения поля.

db.UK_used_cars_NAME.distinct("manufacturer")

$group

Сгруппировать документы и посчитать количество/среднее.

{ $group: { _id: "$manufacturer", cars: { $sum: 1 }, avgMileage: { $avg: "$mileage" } } }

$sort + $limit

Оставить топ производителей по среднему пробегу.

{ $sort: { avgMileage: -1 } }, { $limit: 3 }

$set + $divide

Добавить l/100km по формуле из источника.

{ $set: { litersPer100km: { $divide: [282.481, "$mpg"] } } }

$merge

Сохранить вычисленное поле в существующую коллекцию.

{ $merge: { into: "UK_used_cars_NAME", whenMatched: "merge", whenNotMatched: "discard" } }

$bucket

Распределить дизельные авто по ценовым диапазонам.

{ $bucket: { groupBy: "$price", boundaries: [0, 20000, 30000, 40000, 60000], default: "60000+" } }

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

SQL: справочник SQL. MongoDB: справочник MongoDB.