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

✅ Решения

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

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

Summary session 17 повторяет Atlas, индексы, наполнение коллекций и Aggregation Pipeline.

Atlas — облачный сервис MongoDB для размещения, управления и масштабирования баз данных.

Индекс хранит часть данных коллекции в форме, удобной для поиска.

COLLSCAN означает просмотр коллекции без индекса, IXSCAN — использование индекса.

FETCH читает документы из коллекции, SORT показывает сортировку в памяти.

Geo-запросы требуют подходящего 2dsphere индекса, например по coordinates.

Практический блок создаёт students, выбирает выпускников и заполняет другую коллекцию.

Домашка разбирает theaters в Калифорнии, максимальные bedrooms и лучший рейтинг при минимум 50 отзывах.

Решения с пояснениями

COLLSCAN / IXSCAN

COLLSCAN = полный просмотр коллекции
IXSCAN = проход по индексу
FETCH = чтение документов
SORT = сортировка в памяти

Эти этапы перечислены в источнике как ключи к разбору explain-плана.

Geo-индекс

db.shipwrecks.createIndex({ coordinates: '2dsphere' })

Индекс нужен до запуска геофильтра, иначе поиск координат будет дорогим.

students

db.students.aggregate([
  { $match: { year: { $gte: 5 } } },
  { $out: "graduated_students" }
])

Сначала выбираем выпускников, затем записываем результат в новую коллекцию.

Кинотеатры в Калифорнии

db.theaters.countDocuments({ "location.address.state": "CA" })

Поле штата обычно лежит внутри адреса кинотеатра; если структура отличается, проверьте документ в Compass.

Самое большое число bedrooms

db.listingsAndReviews.find(
  {},
  { name: 1, bedrooms: 1 }
).sort({ bedrooms: -1 }).limit(1)

Сортировка по bedrooms убыванию поднимает объект с максимальным значением.

Лучший рейтинг при минимум 50 отзывах

db.listingsAndReviews.find(
  { number_of_reviews: { $gte: 50 } },
  { name: 1, "review_scores.review_scores_rating": 1 }
).sort({ "review_scores.review_scores_rating": -1 }).limit(1)

Фильтр по отзывам должен идти до сортировки по рейтингу.