Итоги и что дальше
Собираем картину целиком и намечаем, куда двигаться после основ.
Главный навык, который вы получили, — думать документами: проектировать данные под запросы, а не под нормализацию.
Что мы прошли
- Модель. Документы, коллекции, базы; BSON; соответствие реляционным понятиям.
- CRUD.
insertOne/insertMany,findс операторами запроса, обновление с$set/$inc/$push/$pull,upsertи удаление. - Моделирование. Встраивание против ссылок, связи, денормализация, валидация схемы.
- Агрегация и индексы. Конвейер с
$match/$group/$lookup, индексы иexplain. - Эксплуатация. Драйвер Node.js, транзакции, репликация, шардирование, проектирование схем.
Ключевые принципы на память
- Структура следует за запросами. Сначала «как читается», потом «как хранится».
- Что вместе читается — вместе хранится. Это решает спор «встраивать или ссылаться».
- Индекс под запрос. Без индекса — скан; индексируют поля частых фильтров и сортировок.
- Дублирование — инструмент. Денормализуйте стабильные данные ради скорости чтения.
Куда двигаться дальше
- Углубить агрегацию. Этапы
$unwind,$facet,$bucket, оконные операции — мощный аналитический инструмент. - Производительность. Покрывающие индексы, профайлер медленных запросов, паттерны проектирования (bucket, computed, schema versioning).
- Atlas и эксплуатация. Бэкапы, мониторинг, Atlas Search (полнотекстовый поиск), триггеры.
- Mongoose. Если пишете на Node.js — ODM со схемами, валидацией и удобными моделями.
- Change streams. Подписка на изменения данных в реальном времени — для уведомлений и синхронизации.
Практика важнее теории
Лучший следующий шаг — поднять бесплатный кластер Atlas или контейнер Docker и перенести в MongoDB структуру какого-нибудь своего проекта. Спроектируйте схему от запросов, наполните данными, напишите агрегации, добавьте индексы и посмотрите на explain. Именно на реальной задаче документное мышление становится привычкой.
Итог
- Вы освоили модель, CRUD, моделирование, агрегацию, индексы и основы эксплуатации MongoDB.
- Главное — проектировать данные под запросы и осознанно выбирать встраивание, ссылки и денормализацию.
- Дальше: продвинутая агрегация, производительность, Atlas, Mongoose и change streams — на практике своего проекта.
Проверьте себя
1. Какой главный принцип проектирования данных в MongoDB?
AВсегда нормализовать данные, как в SQL
BПроектировать структуру под частые запросы — структура следует за запросами
CХранить все данные в одной коллекции
DНикогда не дублировать данные
2. Что разрешает спор «встраивать или ссылаться»?
AПравило «что вместе читается — вместе хранится»
BВсегда встраивать
CВсегда ссылаться
DРазмер базы данных
3. Что из перечисленного — разумный следующий шаг после основ?
AПерестать пользоваться индексами
BСпроектировать схему реального проекта в Atlas/Docker и применить агрегации и индексы на практике
CПереписать всё на реляционную БД
DХранить все запросы без explain