MongoDB — нереляционная (NoSQL) база данных, в которой единицей хранения является документ в формате BSON (Binary JSON). Документы группируются в коллекции (аналог таблиц в SQL). Схема документов не фиксирована: разные документы в одной коллекции могут иметь разный набор полей. Это упрощает работу с неоднородными данными и быстрое итерирование схемы.
Как работает
MongoDB хранит данные на диске в формате WiredTiger (с версии 3.2). Запрос к MongoDB использует собственный синтаксис в формате JSON:
db.users.find({ age: { $gte: 18 }, city: "Moscow" }).sort({ name: 1 }).limit(10)
Индексы работают аналогично SQL-СУБД: B-tree, hash, текстовые, геопространственные (2dsphere). Без индекса на поле условия — полный scan коллекции.
Горизонтальное масштабирование достигается через шардирование (sharding): данные разбиваются по ключу шарда между несколькими серверами. Репликация обеспечивается Replica Set: primary принимает запись, secondary реплицируют асинхронно, при сбое primary происходит автовыборы нового.
История
MongoDB разработана компанией 10gen (ныне MongoDB Inc.) в 2007–2008 годах как часть PaaS-платформы. В 2009 году стала самостоятельным продуктом с открытым кодом. MongoDB версии 3.x (2015) принесла WiredTiger-движок с компрессией. MongoDB 4.0 (2018) добавила multi-document ACID-транзакции. В 2018 году MongoDB сменила лицензию с AGPL на SSPL.
Связь с хостингом
MongoDB работает на VPS как самостоятельная установка (mongo daemon, порт 27017) или как managed service: MongoDB Atlas (облачный), AWS DocumentDB (совместимый). На managed хостинге MongoDB требует выделенного экземпляра — на обычном виртуальном хостинге недоступна. Мониторинг: встроенный mongostat, mongotop, интеграция с Prometheus через mongodb-exporter.
Ключевые отличия от похожих терминов
MongoDB vs PostgreSQL: PostgreSQL с JSONB-полями покрывает многие сценарии MongoDB, но MongoDB нативнее для документоориентированных моделей и горизонтального шардирования. MongoDB vs Redis: Redis — in-memory key-value для кэша и очередей, MongoDB — персистентное хранилище документов.
Модель данных MongoDB
Документы в BSON (Binary JSON): вложенные объекты, массивы, без фиксированной схемы. Коллекции ≈ таблицы, документы ≈ строки. Максимальный размер документа — 16 МБ. GridFS — для файлов более 16 МБ.
Индексирование и агрегация
Индексы: Single field, Compound, Multikey (для массивов), Text, 2dsphere (геоданные), TTL (автоудаление по времени). Aggregation Pipeline — обработка данных через цепочку операций: $match, $group, $sort, $lookup (JOIN). explain("executionStats") — анализ запроса.
MongoDB в хостинге
MongoDB Atlas — managed облачный сервис. Self-hosted на VPS: минимум 2 ГБ RAM для production. Replica Set: первичный + 2 вторичных узла для отказоустойчивости. WiredTiger — движок хранения по умолчанию с компрессией данных Snappy/zstd.
Опасные операции MongoDB
Отсутствие транзакций в некоторых операциях: multi-document update без транзакции не атомарен. MongoDB 4.0+ поддерживает ACID-транзакции для replica set. $unset на индексированных полях требует переиндексирования. Большие $in-запросы (>100 значений) медленнее — заменить на $lookup.