Занятие 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.
Домашнее задание
Полный текст ДЗ из источника:
Из коллекции customers выяснить, из какого города "Sven Ottlieb".
Из коллекции ich.US_Adult_Income найти возраст самого взрослого человека.
Из 2 задачи выясните, сколько человек имеют такой же возраст.
Найти _id ObjectId документа, в котором education" IT-career-hub".
Выяснить количество людей в возрасте между 20 и 30 годами.
Подготовка окружения
Откройте MongoDB Compass и подключитесь к учебному серверу, если доступ выдан преподавателем.
Проверьте, что видны коллекции customers и ich.US_Adult_Income.
Для задач на количество используйте кнопку подсчёта результата в 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.
Строки из учебной базы вводятся с теми пробелами, которые есть в данных.