Материалы · инструменты и источники

Справочник по MongoDB · инструменты и источники

Материалы

МАТЕРИАЛЫ

Инструменты
и материалы

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

Зачем раздел
Рабочее окружение вокруг базы: просмотр, проверка, разбор, документация
Что внутри
Шесть групп инструментов и материалов, у каждого — адрес и назначение
Цена
Помечена у каждого: бесплатно, бесплатная версия или платно
Проверено
Все адреса открывались на момент выпуска раздела

§0Куда идти с вопросом

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

Как пишется операторСправочник операторов в документации. Там же примеры и версия, с которой оператор работает.
Что лежит в базеГрафический клиент: Compass, расширение VS Code или mongo-express со стенда.
Почему запрос медленныйexplain плюс визуализатор плана. По одному тексту запроса скорость не определить.
Как спроектироватьШаблоны проектирования схемы и разбор чужих решений: структуру под свою задачу выбирают из них.

Пометка вендорский у материала означает, что его выпустила сама компания MongoDB Inc. Такие материалы точны в части команд и версий, но написаны, чтобы показать продукт с удачной стороны: сравнений с другими базами и разбора неудачных внедрений там не будет.

§1Документация

Документация MongoDB разделена на несколько отдельных сайтов, и это сбивает с толку: поиск выдаёт страницу из руководства по Atlas, когда нужна страница про оболочку. Ниже разобрано, за что отвечает каждый раздел.

MongoDB Manual — основное руководствобесплатно
mongodb.com/docs/manual/

Описание самой базы: типы BSON, методы коллекции, операторы запроса и обновления, индексы, агрегация, репликация. Первое место, куда стоит смотреть по любому вопросу о поведении сервера.

Что открыть
Раздел Query Operators — полный список операторов фильтра с примерами. В нём есть и редкие операторы, которые в статьи не попадают.
Версия
В левом верхнем углу переключатель версии сервера. На стенде курса стоит MongoDB 7 — выбирайте её, иначе примеры могут не запуститься.
Язык
Английский. Русского перевода официальной документации нет; переводы на сторонних сайтах отстают на несколько версий.
mongosh — документация оболочкибесплатно
mongodb.com/docs/mongodb-shell/

Оболочка mongosh — это программа JavaScript с подключением к серверу, поэтому у неё свои возможности: переменные, циклы, функции, загрузка скриптов файлом, настройка вывода. В основное руководство это не входит.

Что открыть
Раздел Reference — список команд оболочки, и Write Scripts — как оформить набор команд файлом и запустить его разом.
Database Tools — утилиты командной строкибесплатно
mongodb.com/docs/database-tools/

Набор отдельных программ: mongoimport и mongoexport для JSON и CSV, mongodump и mongorestore для двоичных копий базы. Они не входят в поставку сервера и ставятся отдельно.

Где встречается
Скрипт stend/load.sh в репозитории практик заливает базы курса именно через mongoimport — глава 1.0.
Разница
mongoexport отдаёт JSON, читаемый человеком, но теряет часть типов BSON. mongodump сохраняет типы точно, но его файл открыть текстовым редактором нельзя. Для резервной копии берут второе, для обмена данными — первое.

§2Посмотреть данные глазами

Графический клиент показывает документы таблицей или деревом, строит фильтры без синтаксиса и выводит статистику коллекции. На задачах курса он экономит время: структуру незнакомой коллекции быстрее увидеть, чем вычитать из кода.

MongoDB Compassбесплатно
mongodb.com/products/tools/compass

Официальный клиент, на нём сняты все кадры в этой книге. Кроме просмотра документов умеет три вещи, которых нет у большинства остальных: анализ схемы, сборку конвейера агрегации по стадиям и разбор плана выполнения запроса схемой.

Анализ схемы
Вкладка Schema берёт выборку документов и показывает, какие поля вообще встречаются в коллекции, какого они типа и в какой доле документов есть. На чужой базе это первое, что стоит открыть.
План выполнения
Вкладка Explain Plan рисует те же шаги, что разбираются в практикуме, прямо в окне клиента — без выгрузки JSON на сторонний сайт.
Ограничение
Анализ схемы идёт по выборке, а не по всей коллекции. Редкое поле, которое есть у одного документа из десяти тысяч, в отчёт может не попасть.
Расширение MongoDB для VS Codeбесплатно
mongodb.com/docs/mongodb-vscode/

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

Чем удобно
Запросы остаются файлом в репозитории: их видно в истории изменений, можно показать преподавателю и запустить повторно. В оболочке набранная команда теряется вместе с окном терминала.
Установка
Поиск «MongoDB for VS Code» в разделе расширений редактора.
NoSQLBooster и Studio 3Tбесплатная версия
nosqlbooster.com

Два клиента с автодополнением команд и переводом запросов из SQL в язык MongoDB — это помогает тем, кто пришёл из реляционных баз. У обоих есть бесплатная редакция с ограничениями и платная полная.

Когда нужны
Когда работа идёт с большой незнакомой базой каждый день. Для задач курса возможностей Compass хватает целиком.
Осторожно
Перевод SQL в запрос MongoDB работает на простых случаях и создаёт ложное ощущение, что базы устроены одинаково. Соединения и вложенные документы он передаёт плохо.

На стенде курса есть третий вариант, который ставить не нужно: mongo-express по адресу localhost:8081, логин и пароль student. Он запускается вместе с сервером командой docker compose up -d и показывает базы и документы в браузере. Возможностей у него меньше, чем у Compass, но он работает там, где ничего нельзя установить.

§3Проверить запрос без сервера

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

Mongo Playgroundбесплатно
mongoplayground.net

Три поля на одной странице: документы коллекции, запрос или конвейер агрегации, результат. Регистрации нет, сохранённая ссылка живёт постоянно. Проект открытый, исходники — на github.com/feliixx/mongoplayground.

Для чего
Разобрать оператор на трёх документах вместо полутора тысяч. Показать коллеге воспроизводимый пример ссылкой, а не скриншотом.
Чего не делает
Плана выполнения не показывает: данных мало, замерять там нечего. Скорость запроса на песочнице ни о чём не говорит.
Данные
Сохранённая песочница открыта любому по ссылке. Рабочие данные туда не вставляют.
MongoDB Search Playgroundбесплатно
search-playground.mongodb.com

Официальная песочница для полнотекстового поиска: там настраивается индекс поиска и проверяется стадия $search. Обычные запросы find она не выполняет.

Когда пригодится
В модуле 3, на теме текстового поиска. Настройка поискового индекса сложнее обычного, и подбирать её на живой базе долго.

§4Разобрать план выполнения

Документ explain — вложенные объекты на несколько экранов, и читать его в терминале тяжело. Визуализатор превращает его в схему шагов и подписывает, сколько документов прочитано на каждом. Как это делается по шагам, разобрано в практикуме после модуля 1.

Paste the Planбесплатно
dfrancour.dev/tools/mongodb-paste-the-plan

Принимает JSON плана и строит дерево выполнения с раскраской шагов по стоимости. Разбирает запрос по правилу ESR и называет порядок полей для индекса. Кнопка обмена сворачивает план в ссылку — по ней разбор открывает любой, файл пересылать не нужно.

Основной инструмент
В практикуме работа идёт на нём: из трёх визуализаторов только он объясняет, почему порядок полей в индексе именно такой.
Исходники
github.com/dfrancour/mongodb-paste-the-plan, лицензия MIT. Инструмент можно поднять у себя, если наружу отдавать планы нельзя.
MongoPilot Explain Plan Visualizerбесплатно
mongopilot.com/tools/mongodb-explain-plan-visualizer/

Тот же разбор плана, но с общей оценкой запроса в баллах. Оценка удобна как ориентир в задании: «доведите запрос до такого-то значения». Второй инструмент нужен ещё и для сверки — два разных разбора одного плана должны указать на одно узкое место.

Правило ESR и разбор плана в документациибесплатно
mongodb.com/docs/manual/tutorial/equality-sort-range-guideline/

Первоисточник правила Equality — Sort — Range: как расставить поля в составном индексе и почему именно так. Рядом лежит страница Interpret Explain Plan Results с расшифровкой всех шагов плана, включая редкие.

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

§5Спроектировать схему

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

Schema Design Patternsбесплатно
mongodb.com/docs/manual/data-modeling/design-patterns/

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

С чего начать
С шаблонов Extended Reference и Subset: они отвечают на вопрос, с которого начинается проектирование: вкладывать связанные данные в документ или ссылаться на них.
Проверка схемы на стороне базыбесплатно
mongodb.com/docs/manual/core/schema-validation/

Правило $jsonSchema заставляет сервер отвергать документы, в которых нет обязательного поля или тип не тот. Свобода формы при этом сохраняется: проверяется только то, что вы перечислили.

Где в книге
Глава 3.1 модуля 3. Раздел документации пригодится раньше, если в своём проекте данные уже расползаются.
Hackolade Studio и Mongo Modelerбесплатная версия
hackolade.com/nosqldb/mongodb-data-modeling.html

Рисование схемы коллекций мышью с выгрузкой готового скрипта: правила проверки и индексы генерируются из нарисованной модели. Mongo Modeler делает то же самое проще и бесплатно, с открытым исходным кодом.

Для чего
Показать структуру базы на защите курсовой или дипломной: схема из такого редактора читается без пояснений.
Не заменяет
Решение о структуре. Редактор нарисует и неудачную модель.
Atlas Performance Advisorвендорскийплатный кластер
mongodb.com/docs/atlas/performance-advisor/schema-suggestions/

Служба облака Atlas сама смотрит на медленные запросы работающего кластера и предлагает индексы и правки схемы — то, что в практикуме делается руками. На бесплатном уровне M0 недоступна, нужен платный кластер, поэтому в курсе она разбирается по документации.

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

§6Учиться дальше

MongoDB Universityвендорскийбесплатно
learn.mongodb.com

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

Язык
Английский, с субтитрами. Терминология совпадает с документацией, так что после этой книги материал читается.
Сертификат
Прохождение программы обучения даёт скидку 50% на экзамен. Студентам и преподавателям по программе MongoDB Students экзамен дают бесплатно, вместе с кредитами на облако Atlas. Заявка подаётся через GitHub Student Developer Pack.
Значки навыков
Skill Badges — короткие курсы на одну тему с отдельным подтверждением. Занимают несколько часов, в отличие от полной программы обучения.
Practical MongoDB Aggregationsбесплатно
practical-mongodb-aggregations.com

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

Когда читать
После модуля 4. До него пользы будет мало: примеры опираются на стадии, которые там разбираются.
MongoDB Community Forumsбесплатно
mongodb.com/community/forums/

Официальный форум, где отвечают инженеры компании. Читать его стоит ради чужих вопросов: в разделе о производительности разобраны десятки реальных планов выполнения с объяснением, что в них не так.

Как спрашивать
К вопросу о скорости прикладывают вывод explain("executionStats"), версию сервера и список индексов коллекции. Без этих трёх вещей ответить нельзя, и первым же сообщением их попросят.

§7Что проверять в чужом материале

Статьи о MongoDB устаревают быстрее, чем статьи о языках программирования: поведение сервера меняется от версии к версии, и совет 2015 года может быть прямо вредным сегодня. Три проверки перед тем, как применять прочитанное.

ВерсияУказана ли версия сервера. До 3.6 сервер по умолчанию слушал внешний адрес, до 4.0 не было транзакций, до 4.4 предел сортировки в памяти был 32 МБ вместо 100 МБ.
Кто написалДокументация, независимый инженер или поставщик. Документация описывает поведение сервера, поставщик показывает свой продукт, независимый инженер разбирает свой случай.
ВоспроизводимостьЕсть ли данные и команды, чтобы повторить самому. Числа, которые нельзя повторить у себя, ничего не подтверждают.
Про сгенерированные ответы

Языковые модели уверенно выдают операторы MongoDB, которых не существует, и путают синтаксис агрегации с синтаксисом find. Полученный от модели запрос проверяют двумя способами: ищут каждый оператор в справочнике операторов и выполняют запрос на данных курса. Без этой проверки неверный updateMany попадает в базу.

§8Сводка

ЗадачаИнструментАдрес
Найти операторMongoDB Manualmongodb.com/docs/manual/
Посмотреть данныеCompassmongodb.com/products/tools/compass
Посмотреть данные без установкиmongo-express на стендеlocalhost:8081, student / student
Проверить запрос без сервераMongo Playgroundmongoplayground.net
Разобрать план выполненияPaste the Plandfrancour.dev/tools/mongodb-paste-the-plan
Подобрать порядок полей в индексеПравило ESRmongodb.com/docs/manual/tutorial/equality-sort-range-guideline/
Спроектировать схемуSchema Design Patternsmongodb.com/docs/manual/data-modeling/design-patterns/
Разобраться в агрегацииPractical MongoDB Aggregationspractical-mongodb-aggregations.com
Пройти курс и сдать экзаменMongoDB Universitylearn.mongodb.com
Задать вопросCommunity Forumsmongodb.com/community/forums/
Материалы · Справочник по MongoDB Автор: Макаров Максим Николаевич