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

🔖 Справочник

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

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

Практикум 15 закрепляет фильтры MongoDB на коллекции ich.imdb.

Основные инструменты: find(), countDocuments(), sort(), limit() и проекция полей.

Отсутствие режиссёра проверяется через $exists: false или через аккуратную проверку пустого массива, если поле есть.

Фильмы США и Франции ищутся по массиву countries через $all.

Китайский или французский язык удобно искать через $in в поле languages.

Жанры Mystery и Sci-Fi вместе требуют $all, а вариант ИЛИ — $in.

Для максимального рейтинга нужно исключить документы без imdb.rating и отсортировать по убыванию.

Топ-3 ошибки: путать $all и $in, сортировать строковые годы как числа без проверки типа, считать документы через find().length вместо countDocuments().

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

find()

Выбор документов по фильтру.

db.imdb.find({ languages: "Chinese" })

$exists

Проверка наличия или отсутствия поля.

db.imdb.find({ directors: { $exists: false } })

$all

Массив содержит все перечисленные значения.

db.imdb.find({ countries: { $all: ["USA", "France"] } })

$in

Поле или массив содержит хотя бы одно из значений.

db.imdb.find({ languages: { $in: ["Chinese", "French"] } })

sort()

Сортировка выборки.

db.imdb.find({ "imdb.rating": { $exists: true, $ne: "" } }).sort({ "imdb.rating": -1 })

limit()

Ограничение числа результатов.

db.imdb.find({ year: "1989" }).sort({ "imdb.rating": -1 }).limit(10)

countDocuments()

Подсчёт документов по фильтру.

db.imdb.countDocuments({ "awards.wins": 2 })

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

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