1. Что такое MongoDB, коллекция и документ

MongoDB — это документо-ориентированная база данных, относящаяся к классу NoSQL. В отличие от реляционных баз данных (например, MySQL или SQL Server), MongoDB хранит данные не в таблицах, а в виде документов (JSON-подобных объектов) внутри коллекций.

📦 Основные понятия:

📁 База данных (Database):

Как и в SQL — это контейнер, в котором хранятся коллекции.

📂 Коллекция (Collection):

Аналог таблицы в SQL. Коллекция содержит множество документов, но не требует жесткой схемы (структуры данных). Это делает MongoDB гибким.

📄 Документ (Document):

Основная единица хранения данных в MongoDB. Документ — это структура в формате JSON (или BSON — бинарный JSON), содержащая пары “ключ-значение”. Каждый документ может иметь уникальную структуру.

Пример документа в MongoDB:

{
  "_id": ObjectId("60f7e7f1b1c2d91234567890"),
  "name": "Kirill Melnikov",
  "email": "kirill@example.com",
  "age": 34,
  "skills": ["Node.js", "MongoDB", "Python"]
}

💡 Особенности:

  • Гибкая структура: каждый документ может иметь разные поля.
  • Высокая производительность при работе с большим объемом данных.
  • Поддержка вложенных объектов и массивов прямо внутри документов.

2. MongoDB Compass: команды и действия

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

🧩 Шаг 1: Создание подключения

🧩 Шаг 2: Создание базы данных

В Compass нажми на кнопку “Create Database” и заполни поля:

  • Database Name: KirillMelnikovDB
  • Collection Name: projects

Нажми Create Database.

📸 Скриншоты:

🧩 Шаг 3: Добавление документов

После создания коллекции можно добавить документ вручную:

{
  "title": "MongoDB Learning",
  "category": "NoSQL",
  "difficulty": "Medium"
}


Нажми “Insert Document”“Insert”.

📸 Скриншот:

🔸 Редактирование документа

Выбираем документ → нажимаем на иконку ✏️ → вносим изменения → Update.

🔸 Удаление документа

Открываем коллекцию → выбираем документ → нажимаем 🗑️ → Delete.

🔸 Поиск по документам (поиск по полям)

Пример:

Найти все проекты со сложностью “Easy”:

{ "difficulty": "Easy" }

🔸 Поиск с условиями (фильтры)

Пример: проекты, где сложность НЕ “Medium”:

{ "difficulty": { "$ne": "Medium" } }

Пример: проекты со сложностью “Hard” или “Medium”:

{ "difficulty": { "$in": ["Hard", "Medium"] } }

🔸 Удаление всех документов по условию

{ "category": "NoSQL" }

📚 Основные команды MongoDB, которые можно также использовать через Mongo Shell или Node.js:

ЦельКоманда
Создание базыuse KirillMelnikovDB
Создание коллекцииdb.createCollection(“projects”)
Добавить документdb.projects.insertOne({…})
Удалить документ
db.projects.deleteOne({ title: "..." })
Найти документ
db.projects.find({ difficulty: "Medium" })

3. Пример подключения MongoDB Cloud через Node.js

🔸 Шаг 1: Создаем новый проект в WebStorm и выбираем Node.js

Открываем терминал и прописываем команды:

Открываем package.json и проверяем установился ли mongodb

🔸 Шаг 2: Зарегистрируйся в MongoDB Atlas (Cloud)

Перейди на сайт: https://cloud.mongodb.com/

  1. Зарегистрируйся / войди в аккаунт.
  2. Создай кластер (можно бесплатный).
  3. Создай базу данных и коллекцию, как мы делали в Compass.
  4. Создай пользователя БД и установи пароль.
  5. Разреши доступ к IP-адресу: 0.0.0.0/0 (временно для тестов).

IP адрес вводим 0.0.0.0/0 и вводим username и password

Выбираем тип подключения –> Drivers

Копируем ссылку для подключения базы данных к Node.js

mongodb+srv://KirillMelnikov:@kmcluster.7edn4yd.mongodb.net/?retryWrites=true&w=majority&appName=KMcluster

Создаем фаил indexjs.js и пишем данный код, в MongoClient всматвляем ссылку подключения из MongoDB Cloud и <db_password> меняем и вписываем свой созданный пароль.

const { MongoClient } = require('mongodb');
 
const client = new MongoClient('mongodb+srv://KirillMelnikov:1234qwer@kmcluster.7edn4yd.mongodb.net/?retryWrites=true&w=majority&appName=KMcluster')
 
const start = async () => {
    try {
        await client.connect();
        console.log('Соединение установлено')
    } catch (e) {
        console.log(e)
    }
}
 
start()
const { MongoClient } = require('mongodb');
 
const client = new MongoClient('mongodb+srv://KirillMelnikov:1234qwer@kmcluster.7edn4yd.mongodb.net/?retryWrites=true&w=majority&appName=KMcluster')
 
const start = async () => {
    try {
        await client.connect();
        console.log('Соединение установлено')
        await client.db().createCollection('users')
        const users = client.db().collection('users');
        await users.insertOne({name: 'Kirill', age: 35})
        const user = await users.findOne({name: 'Kirill'})
        console.log(user)
    } catch (e) {
        console.log(e)
    }
}
 
start()

Проверяем через графическую оболочку в MongoDB Cloud