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

⚠️ Ошибки

📁 Блок: 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().

Типичные ошибки

$in вместо $all

В задаче «США и Франция» $in вернёт фильмы из США или Франции. Исправление: использовать $all.

Не исключили пустой рейтинг

Сортировка может поднять документы с отсутствующим или пустым imdb.rating. Исправление: добавить $exists и $ne.

Неправильный тип года

Если year хранится строкой, фильтр { year: 1989 } ничего не найдёт. Исправление: проверить пример документа и использовать строку.

Слишком узкая проверка режиссёра

{ directors: { $exists: false } } не найдёт пустой массив. Исправление: добавить вариант $size: 0, если он есть в данных.