📖 Теория
⚡ Кратко: суть занятия
Занятие 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 и строка подключения к учебному серверу.