📁 Блок: 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 не в той последовательности.
Теория по источнику
Возможности Compass из источника
Compass поддерживает разные виды отображения коллекций, анализ документов и полей, отображение координат, автоподстановку и подсказки.
Интерфейс помогает формировать запрос пошагово: отдельно Filter, Project и Sort.
История запросов полезна для практикума: можно вернуться к рабочему фильтру и изменить только одно условие.
План выполнения и валидация
Источник упоминает план выполнения запросов — это способ понять, как MongoDB будет искать документы.
Также показан пример $jsonSchema для проверки документов, где поле vendor обязательно и ограничено значениями car2go или enjoy.
Подробные правила JSON Schema шире текущего урока, поэтому их стоит сверять с документацией MongoDB.
Новые операторы
$all нужен, когда поле является массивом и должны присутствовать все заданные элементы.
$exists: true выбирает документы, где поле есть, даже если там null; $exists: false выбирает документы без поля.
$in подходит для выбора одного значения из списка допустимых значений.
Проверить по документации. Расширенные возможности MongoDB, которые источник упоминает обзорно, проверяйте по официальной документации перед применением в рабочем проекте.