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

📖 Теория

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

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

Занятие 54 переводит вводные понятия MongoDB в первые реальные запросы к коллекции ich.US_Adult_Income.

Простой фильтр в Compass записывается как документ: { age: 27 }. Несколько полей в одном фильтре работают как логическое AND.

Вкладка или поле Project управляет тем, какие поля показать: { age: 1, native_country: 1 }.

Поле _id выводится по умолчанию, поэтому его исключают явно: { _id: 0, age: 1, native_country: 1 }.

Sort принимает 1 для возрастания и -1 для убывания, например { age: -1 }.

Для условий используются операторы $lt, $lte, $gt, $gte, $ne, $in, $nin и $or.

Топ-3 ошибки: писать Project в Filter, забывать пробелы в строковых значениях источника, путать $in и $nin.

Где выполняются запросы

Источник показывает первые запросы в MongoDB через графический интерфейс MongoDB Compass. Для занятия используется коллекция ich.US_Adult_Income.

В Compass важно не смешивать три разных поля:

Поле CompassЧто туда писатьПример из источника
FilterКакие документы выбрать{ age: 27 }
ProjectКакие поля показать или скрыть{ _id: 0, age: 1, native_country: 1 }
SortВ каком порядке вывести документы{ age: -1 }

Фильтр как документ

Запрос MongoDB в источнике записывается как документ: слева имя поля, справа значение или условие.

{ age: 27 }

Такой фильтр вернёт документы, где поле age равно 27. Если указать несколько полей, MongoDB ищет документы, которые удовлетворяют всем указанным условиям одновременно.

{ native_country: " Mexico", age: 27 }

Источник сохраняет пробел в строковом значении " Mexico". В учебной базе это может быть частью данных, поэтому строку нужно вводить так, как она хранится в коллекции.

Project: какие поля показать

Project нужен, когда нужно вывести не весь документ, а только выбранные поля. Значение 1 означает «показать поле».

{ age: 1, native_country: 1 }

Поле _id показывается по умолчанию. Если оно не нужно в результате, его исключают через 0.

{ _id: 0, age: 1, native_country: 1 }

Sort: порядок документов

В поле Sort источник показывает два направления сортировки:

  • { age: 1 } — по возрастанию возраста;
  • { age: -1 } — по убыванию возраста.

Операторы условий

Если простого равенства недостаточно, условие записывается как вложенный документ с оператором.

ОператорЗначениеПример
$ltМеньше{ age: { $lt: 30 } }
$lteМеньше или равно{ age: { $lte: 30 } }
$gtБольше{ age: { $gt: 18 } }
$gteБольше или равно{ age: { $gte: 18 } }
$neНе равно{ education: { $ne: " Bachelors" } }
$inЗначение входит в список{ hours_per_week: { $in: [45, 50, 80] } }
$ninЗначение не входит в список{ hours_per_week: { $nin: [45, 50, 80] } }
$orДостаточно одного совпавшего условия{ $or: [ ... ] }

Создание учебного пользователя

В источнике приведена команда создания пользователя ich1 с ролью readAnyDatabase в базе admin и строка подключения к учебному серверу.

Проверить по документации. Роли пользователей, параметры подключения и SSL-настройки зависят от окружения. Не переносите учебную строку подключения в production без проверки политики безопасности.