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

✅ Решения

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

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

Практикум 14 закрепляет первые запросы MongoDB на учебных коллекциях sample_training и sample_restaurants.

Главная идея: сначала сузить выборку через Filter, затем отдельно решить, нужны ли Project, Sort, Limit или подсчёт.

В companies нужно найти компании, основанные с 2005 года, и разнести их по размеру штата.

Компании с number_of_employees: 0 источник рекомендует не учитывать.

Для acquisition нужно сортировать сделки по цене и выписать участников и source_url.

В trips нужно найти самую долгую аренду велосипеда и самый часто встречающийся bikeid.

В restaurants нужно посчитать рестораны по районам.

Топ-3 ошибки: считать нулевой штат как стартап, сортировать строковые деньги как числа, забывать limit(5) для топа поглощений.

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

1

Компании с 2005 года

db.companies.find({ founded_year: { $gte: 2005 }, number_of_employees: { $gt: 0 } })

Фильтр по founded_year берёт нужный период, а number_of_employees > 0 выполняет оговорку источника.

2

Стартапы

db.companies.countDocuments({ founded_year: { $gte: 2005 }, number_of_employees: { $gt: 0, $lt: 30 } })

Граница «до 30» не включает 30.

3

Средние компании

db.companies.countDocuments({ founded_year: { $gte: 2005 }, number_of_employees: { $gte: 30, $lte: 100 } })

Диапазон 30-100 включает обе границы.

4

Крупные компании

db.companies.countDocuments({ founded_year: { $gte: 2005 }, number_of_employees: { $gt: 100, $lte: 1000 } })

Категория после средней начинается строго выше 100.

5

Очень большие компании

db.companies.countDocuments({ founded_year: { $gte: 2005 }, number_of_employees: { $gt: 1000 } })

Источник задаёт условие «свыше 1000».

6

Самая долгая аренда

db.trips.find({}, { tripduration: 1, bikeid: 1, _id: 0 }).sort({ tripduration: -1 }).limit(1)

Максимум находится сортировкой по убыванию.