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

🔖 Справочник

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

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

Практикум 17 закрепляет MongoDB Atlas, Compass, mongosh, импорт CSV, текстовые и составные индексы.

Первая задача: выбрать фильмы и сериалы с IMDb рейтингом 8 и выше, отсортировать по рейтингу и записать 50 документов в highly_rated_movies.

Если работа идёт в общей базе ich_edit, к имени новой коллекции нужно добавить своё имя для уникальности.

Вторая часть практикума: импортировать BankChurners.csv в credit_cards и исключить четыре последних технических столбца.

Для поля Education_Level создаётся text index, затем выполняется $text поиск и проверяется explain-план.

Составной индекс Education_Level + Customer_Age должен помогать фильтрации и сортировке по этим полям.

Второй составной индекс Income_Category + Total_Trans_Amt нужен для запросов по доходу и сумме транзакций.

Топ-3 ошибки: не уникализировать имя коллекции, импортировать лишние Naive_Bayes поля, проверять индекс без explain().

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

aggregate()

Запускает pipeline и позволяет записать результат через $out.

db.movies.aggregate([{ $match: { "imdb.rating": { $gte: 8 } } }])

$match

Фильтрует документы по условию.

{ $match: { "imdb.rating": { $gte: 8 } } }

$sort

Упорядочивает документы; -1 означает убывание.

{ $sort: { "imdb.rating": -1 } }

$limit

Оставляет заданное количество документов.

{ $limit: 50 }

$out

Записывает результат pipeline в новую коллекцию.

{ $out: "highly_rated_movies" }

createIndex()

Создаёт text или составной индекс.

db.credit_cards.createIndex({ Education_Level: "text" })

$text / $search

Ищет документы по текстовому индексу.

db.credit_cards.find({ $text: { $search: "Graduate" } })

explain()

Показывает, использует ли запрос индекс.

db.credit_cards.find({ $text: { $search: "Graduate" } }).explain("executionStats")

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

Локальный каталог MongoDB: справочник MongoDB. SQL-операторы предыдущих блоков: справочник SQL.