Хотя большинство системных и бизнес-аналитиков чаще сталкиваются с реляционными базами данных, будет полезным знать про другие альтернативы. Сегодня рассмотрим примеры работы с документо-ориентированной NoSQL-базой MongoDB, развернутой в онлайн-песочнице https://mongoplayground.net/.
Что такое MongoDB и как она работает: краткий ликбез
Здесь я уже упоминала про различные виды NoSQL-баз. Они предназначены для хранения больших объемов данных со сложной или изменяющейся структурой. В отличие от реляционных баз данных, NoSQL-СУБД обычно не поддерживают стандартный язык SQL-запросов, а данные в них хранятся не в связанных таблицах, а в других структурах, оптимизированных под варианты использования. Например, графовая база данных Neo4j, о которой я рассказываю в этой статье, хранит данные в виде графа и отлично решает задачи анализа социальных связей, поиска оптимальных путей, исследования трафика и других подобных задач. А документо-ориентированная база данных MongoDB хорошо справляется с задачами управления разнообразным контентом. К примеру, системы чат-ботов для поддержки пользователей на сайтах, где можно отправить вопрос оператору, при желании указать свои имя и контакты (емейл и/или телефон) для последующей связи, а также присоединить к обращению скриншот или другое вложение.
В качестве примера рассмотрим случай, с которым мы часто сталкиваемся в нашем учебном центре, когда клиент оставляет заявку на обучение. Несмотря на ограниченный список полей в форме обратной связи (Курс, Имя, Емейл, Телефон, Сообщение), заявки заполняются с разной степенью полноты. Кто-то не хочет оставлять свой номер телефона и не заполняет это поле, а кому-то нужно дать больше вводной информации о своих потребностях, что вносится в поле Сообщение. Рассмотрим, как представить сведения по заявкам физических лиц и корпоративных клиентов в документо-ориентированной базе данных MongoDB.
Для этого сперва вспомним основные принципы работы этого NoSQL-хранилища:
- вместо таблиц MongoDB использует коллекции, где хранятся документы – аналоги строк в реляционной БД;
- MongoDB хранит данные в виде JSON-документов с различным уровнем глубины, кодируя их в бинарном формате BSON, который добавляет поддержку таких типов данных, как Date и binary, изначально не поддерживаемых в JSON;
- разные коллекции могут иметь разные структуры, причем даже в рамках одной коллекции у документов может различаться набор полей и их типы данных;
- будучи NoSQL-хранилищем, MongoDB не поддерживает классические SQL-запросы и по-своему реализует некоторые операции. В частности, вместо соединения таблиц с оператором JOIN в MongoDB применяется сохранение нескольких документов в одну коллекцию, чтобы потом работать с ней. Поддерживаются операции вставки, изменения и удаления данных, а также выборки документов с фильтрацией, группировкой и агрегацией по значениям полей.
Поняв ключевые особенности хранения данных в MongoDB, рассмотрим, как сохранить в этой NoSQL-СУБД данные по заявкам клиентов. Также рассмотрим, как сделать запросы к ним.
Основы архитектуры и интеграции информационных систем
Код курса
OAIS
Ближайшая дата курса
22 декабря, 2025
Продолжительность
25 ак.часов
Стоимость обучения
56 000 руб.
Практический пример BSON-структуры данных и запросы к ней
Предположим, у нас есть 5 заявок на разные курсы от нескольких клиентов:
- Татьяна из Казани хочет заказать для 20 сотрудников своей компании офлайн-курс по разработке ТЗ с кодом TTIS. Для связи Татьяна оставила свой емейл и телефон.
- Бориса интересует индивидуальное онлайн-обучение на курсе по моделированию бизнес-процессов (MODP). Связаться с Борисом можно по электронной почте.
- Лиза из России хочет на групповой онлайн-курс по основам архитектуры и интеграции информационных систем (OAIS) и просит связаться с ней в мессенджере Телеграм;
- Никите из Казахстана, который оставил контактный номер телефона, нужен групповой офлайн-курс для сотрудников Банка по методам управления бизнес-анализом (BAMP) в городе Астана;
- Алексей из Москвы хочет офлайн обучиться моделированию бизнес-процессов в индивидуальном режиме на курсе MODP. Для уточнения условий Алексей просит позвонить ему на указанный номер телефона.
Упакуем эти заявки в структуру данных BSON. В качестве указания полей (ключей) будем использовать следующие названия:
| Ключ | Смысл | Тип данных | Пример записи |
| course | Желаемый курс | строка | TTIS |
| name | Имя клиента | строка | Анна |
| Адрес электронной почты клиента | строка | anna@email.ru | |
| phone | Телефон клиента | строка | 123456789 |
| corp | true для юрлиц, false для физлиц | логический | true/false |
| country | страна | строка | |
| city | город | строка | Казань |
| online | true для онлайн-занятий, false для офлайн-обучения | логический | true/false |
| group | true для обучения в группе,
false для индивидуального обучения |
логический | true/false |
| number_of_students | Количестве студентов в группе для корпоративного обучения | число | 20 |
| info | Дополнительная информация | строка | Позвоните мне для уточнения деталей |
Чтобы показать, как MongoDB Работает со вложенными структурами данных, упакуем поля country, city, online, group, number_of_students и info в запись под названием wishes. В итоге получим следующую коллекцию в MongoDB:
[
{
"course": "TTIS",
"name": "Анна",
"email": "anna@email.ru",
"phone": "123456789",
"corp": true,
"wishes": {
"city": "Казань",
"online": true,
"group ": true,
"number_of_students": 20
}
},
{
"course": "MODP",
"name": "Борис",
"email": "boris@email.ru",
"corp": false,
"wishes": {
"online": true,
"group ": false,
}
},
{
"course": "OAIS",
"name": "Лиза",
"phone": "987654321",
"corp": false,
"wishes": {
"country": "Россия",
"online": true,
"group ": true,
"info": "Прошу связаться со мной в телеграм"
}
},
{
"course": "BAMP",
"name": "Никита",
"phone": "1122334455",
"email": "nikita@email.bank",
"corp": true,
"wishes": {
"country": "Казахстан",
"city": "Астана",
"online": false,
"group ": true,
"company": "Банк"
}
},
{
"course": "MODP",
"name": "Алексей",
"phone": "998887766",
"corp": false,
"wishes": {
"country": "Россия",
"city": "Москва",
"online": false,
"group ": false,
"info": "Позвоните мне для уточнения деталей"
}
}
]
Как представить эту структуру данных в других форматах (XML, YAMl, Protobuf), читайте в нашей новой статье.
В качестве прикладного инструмента будем использовать онлайн-песочницу https://mongoplayground.net/. Вставим созданную структуру данных ка коллекцию и сделаем к ней запрос. Например, какие клиенты хотят заниматься офлайн. Для этого напишем в разделе Query следующий запрос:
db.collection.find({
"wishes.online": false
})
В результате выполнения получим набор документов, которые соответствуют заданным условиям фильтрации. При этом движок также отобразил идентификатор каждого документа, который был создан автоматически.

Найдем всех юрлиц — корпоративных клиентов, которые не указали номер телефона. Запрос с таким условием фильтрации будет следующим:
db.collection.find({
corp: true
},
{
phone: 0
})
В результате выполнения запроса найдено 2 документа:

Разумеется, в MongoDB можно выполнить еще множество других запросов на изменение данных, сохранение нескольких документов в один, выполнение агрегатных функций и пр. Однако, рассмотренная онлайн-песочница поддерживает не все из них. Попробовать поработать с ней можно самостоятельно, сформировав одну или несколько коллекций и поместив их в онлайн-песочницу https://mongoplayground.net/.
Разработка ТЗ на информационную систему по ГОСТ и SRS
Код курса
TTIS
Ближайшая дата курса
19 января, 2026
Продолжительность
22 ак.часов
Стоимость обучения
48 000 руб.
Подробнее эти и другие темы по основам архитектуры и интеграции информационных систем разбираются на курсах Школы прикладного бизнес-анализа в нашем лицензированном учебном центре обучения и повышения квалификации системных и бизнес-аналитиков в Москве:
- Основы архитектуры и интеграции информационных систем
- Разработка ТЗ на информационную систему по ГОСТ и SRS
Источники


