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

📖 Теория

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

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

Вторая часть Atlas переносит акцент с индексов на наполнение коллекций и запись результата aggregation.

Коллекция students создаётся через insertMany из CSV-подобной таблицы.

Выпускников можно выбрать через $match по году обучения и записать в новую коллекцию через $out.

$out записывает результат pipeline в коллекцию, поэтому перед запуском нужно понимать, куда попадут данные.

Задание с airbnb_Istanbul и airbnb_manhattan100 тренирует геофильтр, сортировку и экспорт результата.

Для Manhattan используется Polygon в address.location и сортировка price: -1.

Для топ-100 нужна стадия $limit: 100 перед $out.

Топ-3 ошибки: забыть создать/проверить коллекцию назначения, поставить $out не последней стадией, скопировать типографские кавычки вместо обычных.

Разбор темы

Наполнение students

Источник показывает CSV-таблицу students и её перевод в insertMany. Это важный шаг: MongoDB хранит документы, поэтому каждую строку таблицы нужно превратить в объект.

db.students.insertMany([
  { sID: 22001, name: "Alex", year: 1, score: 4.0 }
])

Выбор выпускников

В задании нужно выбрать студентов-выпускников. В учебном наборе year показывает год обучения; выпускников можно трактовать как старшие курсы, например year >= 5.

{ $match: { year: { $gte: 5 } } }

$out

$out записывает результат pipeline в коллекцию. В Compass это удобно для создания derived collection: сначала фильтруем, затем сохраняем.

[
  { $match: { year: { $gte: 5 } } },
  { $out: "graduated_students" }
]

airbnb_Istanbul

Задание просит создать отдельную коллекцию объектов недвижимости из Стамбула. Если поле address.market содержит город, фильтр можно строить по нему.

[
  { $match: { "address.market": "Istanbul" } },
  { $out: "airbnb_Istanbul" }
]

airbnb_manhattan100

Источник даёт polygon для Manhattan. После $match нужна сортировка по price убыванию, ограничение 100 и запись через $out.