Модуль 2 · Практикум

Справочник по MongoDB · модуль 2 · практикум

ПРАКТИКУМ

ПРАКТИКУМ · МОДУЛЬ 2

Аналитик данных:
первая неделя

Ролевой практикум по языку фильтров MongoDB. Студент неделю работает младшим аналитиком в кадровом агентстве: проверяет запросы коллег, собирает запросы по заявкам заказчиков, предсказывает результат фильтра и пишет запросы сам. В пятницу руководитель присылает рецензию на всю работу.

2 парыбаза hh4 письма + рецензияглавы 2.1–2.8работает в браузере
Открыть рабочий стол → Установка не нужна. Работа сохраняется в этом браузере.
Аналитик данных: первая неделя · письмо 1
Рабочий стол практикума: слева письмо руководителя, справа запрос коллеги на ревью и найденные им документы
Рабочий стол: слева письмо руководителя, справа задание. Запрос коллеги выполнен на базе hh, ниже — его результат.

§1Легенда

Кадровое агентство «Точка найма» подбирает IT-специалистов для компаний Москвы, Ярославля, Казани и Санкт-Петербурга. Данные агентства лежат в MongoDB, в базе hh: резюме кандидатов, вакансии, компании-заказчики и собеседования. Это та же база, на которой построены главы 2.1–2.9 справочника, поэтому документы уже знакомы.

В отделе данных агентства запрос для заказчика пишет один аналитик, а проверяет второй. Новый сотрудник в первую неделю делает и то и другое: сначала проверяет чужие запросы, затем собирает и пишет свои. Задания приходят письмами от руководителя отдела.

Агентство, его сотрудники и кандидаты придуманы для практикума. Названия компаний-заказчиков взяты из базы hh без изменений.

ВЫ
Младший аналитик данныхроль студента

Первая неделя в агентстве. Проверяет запросы коллег, выполняет заявки заказчиков, пишет запросы сам.

ВС
Вера Соболеваруководитель отдела данных

Присылает четыре письма с заданиями и в конце недели — рецензию с баллами.

ДПГ
Денис, Полина, Глебстажёр и аналитики

Авторы восьми запросов на ревью. В каждой карточке — задача, запрос и что коллега написал заказчику.

ЗК
Заказчикипять заявок

Кандидат Пётр Ковалёв, компании Retail Lab и Р‑Фарм, отдел подбора Яндекса и отдел качества данных агентства.

§2Зачем практикум в форме рабочей недели

В практических работах модуля формулировка задачи обычно подсказывает оператор: «найдите документы, где навыки содержат и SQL, и Python» ведёт к $all. В заявке заказчика оператор не назван, его выбирает аналитик. Кроме того, аналитик проверяет запросы коллег.

Практикум построен как рабочая неделя нового сотрудника. Каждое письмо отрабатывает один навык:

письмо 1 · ревьюЧитать чужой запрос

Найти ошибку в готовом запросе и сказать, как её исправить. Результат запроса виден; соответствует ли он задаче, решает студент.

письмо 2 · сборкаВыбирать из похожих вариантов

Собрать запрос из блоков, среди которых есть почти верные: $lt рядом с $lte, $in рядом с $all.

письмо 3 · ситоПредсказывать результат

Решить без запуска, какие документы вернёт фильтр. Для этого нужны правила сопоставления из глав 2.1–2.6.

письмо 4 · свой запросПисать запрос самому

Перевести задачу заказчика в фильтр без готовых блоков.

Во время работы баллы не показываются. Кнопка «Выполнить» выводит найденные документы, и подходят ли они под задачу, студент определяет сам. Баллы и разбор всех заданий появляются после сдачи, в рецензии.

Так же устроен практикум «Архитектор по заявке» в справочнике System design: легенда, письма и рецензия в конце. В нём по письмам компании собирается схема системы, и данные раскладываются по базам.

§3Неделя по письмам

Следующее письмо открывается кнопкой «Дальше» внизу текущего. Переход не зависит от ответов в предыдущем письме. До сдачи к любому открытому письму можно вернуться и поменять ответ.

Понедельник · письмо 1

Ревью запросов коллег

Восемь запросов от Дениса, Полины и Глеба. В карточке — задача заказчика, сам запрос и что коллега написал по результату. Кнопка «Выполнить запрос коллеги» показывает, какие документы запрос вернул.

  • решение: «Запрос верный» или «Есть ошибка»;
  • для ошибки — вид из списка девяти вариантов;
  • комментарий: что не так и как исправить;
  • по желанию — исправленный запрос, его тоже можно выполнить.
Карточка ревью: запрос коллеги, его результат, выбор решения и поле комментария
Карточка ревью: результат запроса коллеги и поля для решения.
Вторник · письмо 2

Сборка запросов из блоков

Пять заявок от заказчиков. Условия для запросов написали стажёры, часть из них содержит ошибки. Блоки переносятся из набора в фильтр перетаскиванием или нажатиями. Под фильтром показан текст запроса, который выполняется, и найденные документы.

Есть два составных блока: $or с ветками, условия которых соединяются через «или», и $elemMatch, который собирает условия для одного элемента массива.

Сборка запроса: набор блоков, фильтр с одним условием, текст запроса и найденные вакансии
Заявка 1: в фильтре одно условие, запрос выполнен.
Вторник · письмо 2

Блок $or с ветками

Блок $or кладётся в фильтр целиком, затем в его ветки переносятся условия. Кнопка «+ ветка» добавляет ветку. Крестик возвращает блок в набор вместе с условиями внутри.

Блок $or в фильтре с двумя пустыми ветками
Блок $or в фильтре: две пустые ветки.
Среда · письмо 3

Сито: результат до запуска

Пять фильтров по коллекции resumes и девять резюме. В каждом раунде резюме раскладываются по двум колонкам: «Попадёт в результат» и «Не попадёт». На карточке показаны поля, которые проверяет фильтр; кнопка «весь документ» открывает резюме целиком.

Фильтры построены на правилах из глав 2.1–2.6: поле-массив, $ne и отсутствующее поле, сравнение с null, условия на массив документов.

Сито: фильтр раунда 1 и девять карточек резюме с кнопками «попадёт» и «не попадёт»
Раунд 1: карточки ещё не разложены.
Четверг · письмо 4

Свой запрос

Пять задач, фильтр к которым пишется вручную в синтаксисе mongosh. При ошибке разбора показывается, что не так и в какой строке. У каждой задачи есть подсказка, она открывается кнопкой. В конце письма — кнопка «Сдать работу».

Задача письма 4: в фильтре пропущена запятая, под ним сообщение об ошибке разбора
В фильтре пропущена запятая: под ним указано место ошибки.
Пятница · рецензия

Рецензия за неделю

После сдачи ответы закрываются и открывается рецензия: баллы по каждому письму, итоговая оценка и список тем для повторения. Ниже — разбор каждого задания: ответ студента, верный ответ и объяснение. Для собранных и написанных запросов отмечено, какие документы лишние, а каких не хватает.

Итоговая карточка рецензии: баллы по четырём письмам, итог 9 из 10 и темы для повторения
Итоговая карточка рецензии. Под ней — разбор каждого задания.

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

Фильтры выполняются в браузере на копии базы hh со стенда курса, поэтому сервер MongoDB для практикума не нужен. Поддерживаются операторы модуля 2. Каждый запрос практикума и набор каверзных случаев сверены с сервером MongoDB 7: результат на странице совпадает с результатом в mongosh и Compass, включая порядок документов.

В поле ввода можно писать только фильтр — { skills: … } — или вызов целиком: db.resumes.find({ … }). Ключи пишутся без кавычек или в кавычках, строки — в одинарных или двойных кавычках, даты — ISODate("2026-09-01"), шаблоны — /python/i. Собранный или написанный запрос можно скопировать и выполнить на своём стенде: результат будет тот же.

§5Рецензия и оценка

Баллы рецензия считает по шкале ниже. Комментарии к ревью преподаватель читает отдельно: автоматически оценивается только решение по запросу и вид ошибки.

ПисьмоЧто считаетсяБаллы
1 · ревьюВерно оценены запросы (решение и вид ошибки): 7–8 — 3 балла, 5–6 — 2, 3–4 — 13
2 · сборкаРешены заявки: 5 — 3 балла, 4 — 2, 2–3 — 13
3 · ситоВерно разложены карточки: 40–45 — 2 балла, 32–39 — 12
4 · свой запросРешены запросы: 5 — 2 балла, 3–4 — 12
Итого10

Перевод в оценку: 9–10 баллов — «отлично», 7–8 — «хорошо», 5–6 — «удовлетворительно».

Что сдать: на вкладке «Рецензия» укажите фамилию, имя и группу и скачайте файл analitik_<фамилия>.md. В нём рецензия с баллами, решения по всем письмам, комментарии к ревью и тексты запросов.

§6Вопросы

Можно ли пройти практикум дома?

Да. Рабочий стол открывается в любом браузере, сервер не нужен. Работа хранится в том браузере, где её начали: на другом компьютере она не появится. Перед сменой компьютера сдайте работу и скачайте отчёт.

Что будет, если закрыть вкладку?

Ответы сохраняются при каждом изменении и появляются снова при следующем открытии рабочего стола в том же браузере.

Можно ли переделать работу после сдачи?

Нет, после сдачи ответы закрыты. Сбросить работу может только преподаватель — кнопкой «Сбросить работу» с паролем.

Почему по ходу работы не видно, верно ли решено?

Сверка результата с задачей входит в задание. Кнопка «Выполнить» показывает найденные документы, их нужно сравнить с задачей самостоятельно. Баллы появляются в рецензии после сдачи.

Какие главы повторить перед практикумом?

Главы 2.1–2.8: точечная нотация, сравнение, $in и $nin, логика, $exists и $type, массивы, $regex, $expr.

Справочник по MongoDB · практикум модуля 2 © Макаров Максим Николаевич