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

🏠 Домашнее задание

📁 Блок: 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. Из коллекции customers выяснить, из какого города "Sven Ottlieb".
  2. Из коллекции ich.US_Adult_Income найти возраст самого взрослого человека.
  3. Из 2 задачи выясните, сколько человек имеют такой же возраст.
  4. Найти _id ObjectId документа, в котором education " IT-career-hub".
  5. Выяснить количество людей в возрасте между 20 и 30 годами.

Подготовка окружения

  1. Откройте MongoDB Compass и подключитесь к учебному серверу, если доступ выдан преподавателем.
  2. Проверьте, что видны коллекции customers и ich.US_Adult_Income.
  3. Для задач на количество используйте кнопку подсчёта результата в Compass или эквивалентный запрос в mongosh, если он разрешён преподавателем.
Проверить по документации. Интерфейс Compass и способ подсчёта документов могут отличаться по версии. Если кнопка или поле называются иначе, сверяйтесь с документацией MongoDB Compass.

Пошаговое решение

1

Город Sven Ottlieb

В коллекции customers отфильтруйте документ по имени контакта. Возможный фильтр зависит от точного имени поля в данных.

{ ContactName: "Sven Ottlieb" }

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

2

Возраст самого взрослого человека

В Sort отсортируйте по возрасту по убыванию и посмотрите первый документ результата.

{ age: -1 }

Значение поля age в первой строке — максимальный возраст.

3

Сколько людей имеют максимальный возраст

Возьмите найденный максимальный возраст и используйте его в фильтре.

{ age: МАКСИМАЛЬНЫЙ_ВОЗРАСТ }

Подсчитайте количество найденных документов в Compass.

4

_id документа с education

Отфильтруйте документы по полю education.

{ education: " IT-career-hub" }

Оставьте _id в выводе и перепишите значение ObjectId.

5

Количество людей от 20 до 30 лет

Используйте диапазон по age. Если преподаватель уточняет «между» как строго между, замените $gte/$lte на $gt/$lt.

{ age: { $gte: 20, $lte: 30 } }

Подсчитайте количество документов, попавших в результат.

Проверка

  • Фильтры вводятся в Filter, сортировка — в Sort, выбор полей — в Project.
  • Строки из учебной базы вводятся с теми пробелами, которые есть в данных.
  • Для числового возраста кавычки не используются.