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

💻 Примеры

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

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

Занятие 57 показывает, чем MongoDB Compass помогает при формировании выборки.

Compass умеет показывать коллекции разными видами, анализировать поля, подсказывать запросы и сохранять историю.

Источник отдельно упоминает план выполнения запроса и валидацию документов через $jsonSchema.

$all выбирает документы, где массив содержит все указанные элементы.

$exists проверяет наличие поля, включая случай, когда значение равно null.

$in выбирает документы, где поле равно одному из значений массива.

Практика строится на фильмах: рейтинг Rotten Tomatoes, жанры Drama/Fantasy, страны, Project и Sort.

Топ-3 ошибки: использовать $in вместо $all для нескольких жанров, забыть точечную нотацию tomatoes.viewer.rating, сортировать released не в той последовательности.

Выполнимые примеры

Rotten Tomatoes выше 4.5

FILTER: { "tomatoes.viewer.rating": { $gt: 4.5 } }
SORT: { released: -1 }

Точечная нотация обращается к rating внутри вложенного документа tomatoes.viewer.

Драма из США

FILTER: { genres: "Drama", countries: "USA" }
PROJECT: { runtime: 1, plot: 1, title: 1, _id: 0 }
SORT: { runtime: -1 }

Для массива genres простое равенство подходит, если нужно наличие одного жанра.

Драма и фэнтези из США

FILTER: { genres: { $all: ["Drama", "Fantasy"] }, countries: "USA" }
PROJECT: { runtime: 1, plot: 1, title: 1, _id: 0 }
SORT: { runtime: -1 }

$all требует оба жанра одновременно.

Фильмы 1900-1910 с рейтингом

FILTER: { year: { $in: ["1900", "1901", "1902", "1903", "1904", "1905", "1906", "1907", "1908", "1909", "1910"] }, "imdb.rating": { $gte: 7.0 }, awards: { $exists: true } }
PROJECT: { runtime: 1, title: 1, year: 1, _id: 0 }
SORT: { "imdb.rating": 1 }

Источник показывает выбор списка лет через $in и сортировку по вложенному рейтингу.

Проверить по документации. Примеры с aggregate(), $jsonSchema и точными полями sample data сверяйте с текущей структурой коллекции в Compass.