MongoDB простыми словами: создаем первую коллекцию

Зачем вообще смотреть в сторону MongoDB

Представь простую задачу: на сайте есть форма заявки. Человек оставляет имя, email, источник, бюджет и комментарий. Сегодня в форме пять полей, завтра ты добавляешь Telegram, послезавтра — тег рекламной кампании, потом еще UTM-метки

В SQL-мире ты заранее думаешь о таблице и колонках. Это нормально, особенно когда структура понятна. Но на раннем прототипе иногда хочется быстрее: взять объект заявки и сохранить его почти таким же, как он пришел из формы

Вот тут MongoDB часто ощущается естественно. Она хранит данные документами: примерно так же, как JavaScript хранит объект

{
  "name": "Анна",
  "email": "anna@example.com",
  "source": "landing",
  "budget": 50000,
  "status": "new"
}

Это не значит, что MongoDB “лучше SQL”. Это значит, что у нее другой способ смотреть на данные. В этом уроке разберем его без академического тумана и сразу создадим первую коллекцию

Что получится в конце

К концу урока у тебя будет:

  • понимание, что такое база, коллекция и документ в MongoDB;
  • маленькая база crm_demo;
  • коллекция leads;
  • два документа с заявками;
  • первый фильтр по статусу и бюджету;
  • понимание, когда MongoDB подходит, а когда лучше взять SQL.

Если ты изучаешь Node.js, веб-разработку или делаешь небольшие инструменты для бизнеса, этот урок хорошо ложится перед материалом Node.js + MongoDB

MongoDB в трех понятиях

База данных

База данных — контейнер верхнего уровня. Например:

crm_demo

Внутри нее могут быть разные коллекции: заявки, пользователи, заказы, события

Коллекция

Коллекция похожа на папку с однотипными документами. Например:

leads
orders
users
events

Если проводить грубую аналогию с SQL, коллекция немного похожа на таблицу. Но это только аналогия, не полное совпадение

Документ

Документ — отдельная запись в коллекции. В MongoDB он хранится в BSON, а для человека обычно выглядит как JSON:

{
  "name": "Игорь",
  "email": "igor@example.com",
  "source": "telegram",
  "budget": 25000,
  "status": "in_progress"
}

Документ может содержать строки, числа, массивы, вложенные объекты и даты

Чем MongoDB отличается от SQL на практике

В SQL ты часто начинаешь с таблицы:

leads
- id
- name
- email
- source
- budget
- status

Каждая строка живет в этой структуре. Если нужно новое поле, ты меняешь схему таблицы

В MongoDB можно сохранить документы с разным набором полей:

{
  "name": "Анна",
  "email": "anna@example.com",
  "source": "landing",
  "budget": 50000,
  "status": "new"
}
{
  "name": "Игорь",
  "email": "igor@example.com",
  "source": "telegram",
  "budget": 25000,
  "status": "in_progress",
  "telegram": "@igor_demo"
}

У второго документа есть telegram, у первого нет. MongoDB это разрешает

Но здесь есть ловушка. Гибкость не означает “можно хранить как попало”. Если в одном документе поле называется email, в другом mail, в третьем userEmail, приложение быстро превращается в угадайку. В реальном проекте структуру все равно нужно держать в голове, в коде или через схему в ODM вроде Mongoose

Где попробовать MongoDB новичку

Есть три нормальных пути

MongoDB Atlas

Atlas — облачный вариант. Удобен, если не хочется ставить сервер локально или ты сразу хочешь подключить базу к проекту

Что важно:

  • нужен аккаунт;
  • нужно создать database user;
  • нужно настроить доступ по IP;
  • connection string нельзя публиковать с паролем.

MongoDB Community Server

Это локальный сервер MongoDB на твоем компьютере. Хороший вариант, если хочешь учиться без зависимости от облака

Что важно:

  • сервер должен быть запущен;
  • по умолчанию часто используется порт 27017;
  • для визуальной работы удобно поставить Compass.

MongoDB Compass

Compass — графический интерфейс. Это не сама база, а программа, через которую можно смотреть базы, коллекции и документы

Новичку Compass полезен: ты видишь документы глазами и быстрее понимаешь, что происходит

Практика: создаем crm_demo и leads

Дальше можно идти двумя путями:

  • если используешь Atlas, подключись к кластеру через Compass;
  • если MongoDB стоит локально, подключись к mongodb://localhost:27017.
  1. Нажми Create database.
  2. В поле database name напиши crm_demo.
  3. В поле collection name напиши leads.
  4. Создай базу.

Теперь внутри crm_demo появится коллекция leads

Добавляем первый документ

В коллекции leads нажми добавление документа и вставь:

{
  "name": "Анна",
  "email": "anna@example.com",
  "source": "landing",
  "budget": 50000,
  "status": "new"
}

Если Compass ругается, проверь JSON:

  • ключи в двойных кавычках;
  • строки в двойных кавычках;
  • нет лишней запятой после последнего поля.

Добавим второй документ:

{
  "name": "Игорь",
  "email": "igor@example.com",
  "source": "telegram",
  "budget": 25000,
  "status": "in_progress",
  "manager": "Dinar"
}

Теперь в коллекции две заявки

Первый фильтр: найти новые заявки

В поле фильтра Compass вставь:

{ "status": "new" }

Compass покажет только документы, где статус равен new

Теперь найдем заявки с бюджетом больше 30000:

{ "budget": { "$gt": 30000 } }

$gt означает greater than — больше чем

Похожая логика:

  • $lt — меньше чем;
  • $gte — больше или равно;
  • $lte — меньше или равно;
  • $ne — не равно.

Что MongoDB делает удобным

MongoDB хорошо подходит для ситуаций, где данные похожи на объекты:

  • заявки с сайта;
  • профили пользователей;
  • настройки проекта;
  • события аналитики;
  • каталоги с разными характеристиками;
  • быстрые прототипы;
  • API на Node.js.

Например, товар в каталоге может иметь разные поля:

{
  "type": "book",
  "title": "SQL для начинающих",
  "author": "Example Author",
  "pages": 320
}
{
  "type": "course",
  "title": "MongoDB с нуля",
  "durationHours": 6,
  "lessons": 18
}

В SQL это тоже можно моделировать, но иногда документная структура быстрее на старте

Где MongoDB может быть плохим выбором

Я бы не начинал с MongoDB автоматически, если:

  • данные строго табличные;
  • много сложных связей;
  • нужны тяжелые финансовые транзакции;
  • команда уже уверенно работает с PostgreSQL или MySQL;
  • основная задача — аналитические отчеты по связанным таблицам.

MongoDB не отменяет SQL. Хороший разработчик выбирает базу под задачу, а не под модное слово

Частые ошибки новичка

Путать MongoDB и MongoDB Compass

MongoDB Server хранит данные. Compass только показывает их и помогает управлять. Если сервер не запущен, один Compass не спасет

Хранить документы без договоренности о полях

Гибкая схема не означает хаос. Даже в маленьком проекте лучше договориться, что у заявки есть name, email, source, status

Публиковать connection string

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

Считать MongoDB “базой без структуры”

Структура есть, просто она чаще контролируется приложением, а не только самой базой

Ответы на эти вопросы могут быть для вас полезными

MongoDB — это реляционная база?

Нет. MongoDB — документная NoSQL-база. Она хранит документы в коллекциях, а не строки в таблицах

MongoDB лучше SQL?

Не универсально. MongoDB удобна для документных данных и быстрых прототипов. SQL часто лучше для строгих связей, отчетов и транзакций

Нужно ли ставить MongoDB Compass?

Не обязательно, но новичку я бы поставил. Compass помогает увидеть документы, фильтры и коллекции без лишней консоли

Можно ли использовать MongoDB бесплатно?

Для обучения и локальной разработки — да. У облачных тарифов условия нужно проверять на официальной странице Atlas, потому что они могут меняться

Что учить после первой коллекции?

Следующий шаг — подключить MongoDB к Node.js и сделать маленький API для заявок. Тогда база станет частью приложения, а не отдельной вкладкой в Compass

Следующий шаг

Создай коллекцию tasks и добавь три задачи:

{
  "title": "Записать урок про MongoDB",
  "status": "new",
  "priority": 2
}

Потом отфильтруй задачи по status. Если это получилось, переходи к материалу MongoDB Compass: подключение и первая коллекция или сразу к Node.js + MongoDB

Что почитать дальше по MongoDB

Если вы собираете тему по шагам, рядом лучше открыть:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x