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

✅ Решения

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

Разбор заданий

1

Фильтр по возрасту

{ age: 27 }

Ключ age сравнивается с числом 27. Кавычки не нужны, потому что это число, а не строка.

2

Страна и возраст

{ native_country: " Mexico", age: 27 }

Оба условия стоят в одном документе, значит должны выполниться одновременно.

3

Project для двух полей

{ age: 1, native_country: 1 }

1 включает поле в вывод. Этот документ вводится в Project.

4

Project без _id

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

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

5

Сортировка

{ age: 1 }
{ age: -1 }

1 — по возрастанию, -1 — по убыванию. Эти документы вводятся в Sort.

6

Условия

{ age: { $gte: 18, $lte: 30 } }
{ education: { $ne: " Bachelors" } }
{ hours_per_week: { $in: [45, 50, 80] } }

В первом запросе два оператора объединены внутри одного поля age. Во втором используется «не равно». В третьем проверяется принадлежность к списку.

7

Логическое ИЛИ

{
  $or: [
    { income_bracket: { $ne: " <=50K" } },
    { native_country: " United-States" }
  ]
}

$or получает массив условий. По источнику в результат попадает документ, у которого доход не " <=50K" или страна " United-States".