Фильмы США и Франции
db.imdb.find({ countries: { $all: ["USA", "France"] } })
Результат содержит документы, где массив countries включает обе страны. Если заменить $all на $in, попадут фильмы только США или только Франции.
Практикум 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().
db.imdb.find({ countries: { $all: ["USA", "France"] } })
Результат содержит документы, где массив countries включает обе страны. Если заменить $all на $in, попадут фильмы только США или только Франции.
db.imdb.find({ languages: { $in: ["Chinese", "French"] } })
Оператор $in соответствует формулировке «или»: достаточно одного языка из списка.
db.imdb.find({ genres: { $all: ["Mystery", "Sci-Fi"] } })
$all нужен, потому что фильм должен иметь оба жанра.
db.imdb.find({ year: "1989", "imdb.rating": { $exists: true, $ne: "" } }).sort({ "imdb.rating": -1 }).limit(10)
Фильтр убирает документы без рейтинга, сортировка ставит лучший рейтинг первым, limit оставляет десять строк.