Этот вопрос проверяет понимание внутреннего формата хранения данных в MongoDB и отличий между логическим представлением и физическим хранением.
MongoDB хранит данные в формате BSON — это бинарное представление JSON-подобных документов. BSON расширяет JSON: он поддерживает дополнительные типы данных и оптимизирован для быстрого чтения и записи. Хотя разработчик работает с документами как с JSON, внутри базы они хранятся в бинарном виде. Это позволяет MongoDB эффективно обрабатывать запросы и индексы.
На уровне API MongoDB выглядит как работа с обычным JSON, но внутри используется другой, более эффективный формат.
BSON (Binary JSON) — это бинарный формат сериализации документов, используемый MongoDB для хранения и передачи данных.
MongoDB выбрала BSON не случайно — он решает несколько практических задач:
Быстрый доступ к полям
Размер документа и типы полей известны заранее.
Не нужно парсить строковый JSON целиком.
Поддержка дополнительных типов
Даты
Числа разных размеров
Binary data
ObjectId
Эффективная работа с индексами
Типы данных однозначны.
Упрощается сравнение и сортировка.
Логически документ выглядит так:
{
"name": "Ivan",
"age": 30,
"created_at": "2024-01-01T12:00:00Z"
}
Внутри MongoDB он хранится:
В бинарном виде
С явным указанием типов (string, int, date)
С информацией о длине полей
Разработчик с BSON напрямую почти не работает — драйверы делают всё автоматически.
Размер документа
В MongoDB есть лимит на размер одного документа.
Типы данных имеют значение
"30" и 30 — разные значения.
Совместимость с драйверами
Разные языки по-разному маппят типы BSON.
MongoDB логически работает с JSON-подобными документами, но физически хранит данные в формате BSON для скорости и эффективности.