Справочник по MongoDB · Макаров М. Н.

Издание для старших курсов

Макаров Максим Николаевич

Справочник
по MongoDB

От первого документа до аналитической витрины:
запросы, агрегация и связи

Разделы идут в том порядке, в каком с базой работают: запись и чтение, затем язык запросов, затем агрегация. Каждый оператор показан дважды — как он выглядит в оболочке и как тот же запрос пишется из программы, — и подтверждён кадром MongoDB Compass на реальных данных.

Язык драйвера выбирается кнопкой в шапке любой главы: Python, C++, Go или Ruby. Модули, главы и объяснения от этого не меняются — меняется только код. Выбор запоминается и переносится на все страницы.

Порядок глав — это порядок изучения: оператор не встретится в примере раньше, чем разобран. После логически завершённого набора тем идёт практическая работа с готовым решением в репозитории, а за ней — контрольная точка: задача уровня рабочей, без разбора.

MongoDB 7Python · C++ · Go · Ruby4 базы курсакадры Compass

БазыНа чём мы работаем

Все примеры выполнены на четырёх базах курса. Они восстанавливаются одной командой из репозитория практик, данные детерминированные — числа в книге совпадут с вашими. Как скачать базы с GitHub и загрузить в MongoDB — глава 1.0.

shop

Интернет-магазин: товары, заказы с позициями и покупатели. Основная база для CRUD и агрегации.

products 21 · orders 120 · customers 20
hh

Наём: резюме, вакансии, компании и собеседования. На ней разбирается язык фильтров.

resumes 9 · vacancies 8 · companies 8 · interviews 60
logs

Журнал сервиса: события с уровнем, маршрутом и длительностью. Для индексов и группировки по времени.

events 1200
org

Иерархии: сотрудники с руководителями и дерево категорий. Нужны для рекурсивного поиска.

employees 15 · categories 10

github.com/MaximBytecamp/mongodb-practice — стенд, данные и решения практик

Кейсы — девять разобранных случаев из практики, со ссылками на источники

Материалы — инструменты, документация и курсы: чем смотреть данные, проверять запросы и разбирать план выполнения

Отдельный справочник System design: архитектура приложений Работа и выстраивание полноценных систем: балансировщик, ограничение частоты запросов, выбор базы под данные. С практикумом «Архитектор по заявке». Открыть →

ПланМодули и главы

МОДУЛЬ 1
МОДУЛЬ 2
МОДУЛЬ 3

Форма данных и скорость

базы shop и logs

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

МОДУЛЬ 4

Конвейер агрегации

база shop

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

  • 4.1Конвейер и стадия $matchготовится
  • 4.2$project: форма ответаготовится
  • 4.3$addFields, $set, $unsetготовится
  • 4.4$group и аккумуляторыготовится
  • 4.5$sort, $limit, $count, $sortByCountготовится
  • 4.6$unwind: массив становится документамиготовится
  • 4.7$push, $addToSet, $first, $lastготовится
  • 4.8$bucket, $bucketAuto, $facetготовится
  • 4.9$replaceRoot, $replaceWith, $redactготовится
  • ПР-04Витрина продаж за квартал
  • КТ-04Отчёт для руководителя
МОДУЛЬ 5

Выражения над массивами

базы shop и logs

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

  • 5.1$arrayElemAt и $sliceготовится
  • 5.2$filterготовится
  • 5.3$mapготовится
  • 5.4$reduceготовится
  • 5.5$let: локальные переменныеготовится
  • ПР-05Чек заказа: пересчёт позиций
МОДУЛЬ 6

Связи между коллекциями

базы shop, org и hh

Документная база умеет соединять коллекции — и делает это иначе, чем SQL. Заканчиваем материализованной витриной.

  • 6.1$lookup: соединение коллекцийготовится
  • 6.2$lookup с конвейеромготовится
  • 6.3$graphLookup: иерархииготовится
  • 6.4$unionWithготовится
  • 6.5$merge: витрина, которую пересобираютготовится
  • ПР-06Оргструктура и витрина заказов
  • КТИтоговая: аналитический контур
Справочник по MongoDB · МДК.04.01 © Макаров Максим Николаевич