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

Открываем терминал и прописываем команды:
- npm init -y – создаёт
package.json
файл с настройками по умолчанию для проекта Node.js,-y
означает “yes to all” - npm i mongodb / npm install mongodb – устанавливает официальную библиотеку MongoDB для Node.js.
Открываем package.json и проверяем установился ли mongodb

🔸 Шаг 2: Зарегистрируйся в MongoDB Atlas (Cloud)
Перейди на сайт: https://cloud.mongodb.com/
- Зарегистрируйся / войди в аккаунт.
- Создай кластер (можно бесплатный).
- Создай базу данных и коллекцию, как мы делали в Compass.
- Создай пользователя БД и установи пароль.
- Разреши доступ к 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
