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

✅ Решения

📁 Блок: 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-категорий.

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

Личная копия

В Compass экспортируйте ich.UK_used_cars и импортируйте в ich_edit.UK_used_cars_ВАШЕ_ИМЯ. В Atlas можно импортировать JSON из ссылки источника.

Производители

Используйте distinct("manufacturer") для списка или $group по manufacturer, если сразу нужен счётчик.

Максимум документов

$group считает cars, затем $sort: { cars: -1 } и $limit: 1 оставляют производителя-лидера.

Трансмиссия

$group по transmission показывает распределение. Если названия в данных отличаются регистром, сначала проверьте реальные значения distinct("transmission").

Средний пробег

$avg по mileage даёт средний пробег, $sum: 1 показывает размер группы.

l/100km

Используйте $divide: [282.481, "$mpg"]. Если mpg отсутствует или равен 0, такую запись лучше предварительно отфильтровать.

$merge

Стадия $merge должна быть последней: она записывает изменённые документы в указанную коллекцию.

Bucket labels

$bucket возвращает техническую нижнюю границу диапазона в _id, поэтому для читаемого отчёта добавьте category через $switch.