Что такое MongoDB?
MongoDB — это документо-ориентированная NoSQL база данных, которая хранит данные в формате документов, похожих на JSON, обеспечивая высокую производительность и гибкость схемы данных.
Основные концепции MongoDB
- Документы — записи в формате BSON (Binary JSON)
- Коллекции — группы связанных документов
- Базы данных — наборы коллекций
- Поля — пары ключ-значение внутри документов
Ключевые преимущества MongoDB
- Гибкая схема — нет жесткой структуры таблиц
- Горизонтальное масштабирование — встроенный шардинг
- Высокая производительность — оптимизирован для чтения и записи
- Rich Query Language — мощные возможности запросов и фильтрации
- Агрегационный конвейер — сложная обработка и анализ данных
Основные операции с данными
1
2// Вставка документа
3db.users.insertOne({
4name: "Иван Иванов",
5age: 30,
6email: "ivan@example.com",
7skills: ["Python", "JavaScript", "MongoDB"]
8});
9
10// Поиск документов
11db.users.find({ age: { $gte: 18 } });
12
13// Обновление документа
14db.users.updateOne(
15{ name: "Иван Иванов" },
16{ $set: { age: 31 }, $push: { skills: "React" } }
17);
18
19// Удаление документа
20db.users.deleteOne({ name: "Иван Иванов" });
Типы индексов в MongoDB
- Одиночные индексы — по одному полю
- Составные индексы — по нескольким полям
- Многоключевые индексы — для полей-массивов
- Текстовые индексы — для полнотекстового поиска
- Геопространственные индексы — для работы с координатами
Установка и начало работы
Установка MongoDB на различных системах:
Работа с MongoDB в Python
Использование PyMongo для подключения:
1
2from pymongo import MongoClient
3
4# Подключение к MongoDB
5client = MongoClient('mongodb://localhost:27017/')
6db = client['mydb']
7collection = db['users']
8
9# Вставка документа
10user = {
11 "name": "Анна Петрова",
12 "age": 25,
13 "skills": ["Python", "Django", "MongoDB"]
14}
15result = collection.insert_one(user)
16
17# Поиск документов
18users = collection.find({"age": {"$gte": 18}})
19for user in users:
20 print(user)
21
Агрегационный конвейер
Мощный инструмент для обработки данных:
Часто задаваемые вопросы
Когда стоит выбрать MongoDB вместо SQL БД?
MongoDB хорошо подходит для проектов с изменяющейся схемой данных, необходимостью горизонтального масштабирования, работой с JSON-подобными данными и быстрой разработкой прототипов.
Поддерживает ли MongoDB транзакции?
Да, начиная с версии 4.0 MongoDB поддерживает ACID транзакции для операций с несколькими документами и коллекциями.