Парсер BSON

BSON (Binary JSON) — это формат двоичной сериализации, используемый MongoDB для хранения документов. Он расширяет JSON дополнительными типами, такими как ObjectId, Date, Binary и Decimal128. Этот инструмент разбирает файлы BSON и отображает содержимое в виде JSON с информацией о типах.

Спецификации

Типичные сценарии использования

  • Просмотр файлов дампа MongoDB (.bson)
  • Отладка данных BSON в очередях сообщений или кешах
  • Анализ перехваченных пакетов проводного протокола MongoDB
  • Конвертация BSON в JSON для внешних инструментов
  • Аудит структуры и типов документа

Возможности

  • Разбор двоичных файлов BSON с помощью перетаскивания или выбора файла
  • Декодирование hex-кодированных данных BSON
  • Отображение всех типов BSON, включая ObjectId, Date, Binary, Regex, Decimal128
  • Конвертация в JSON с нотацией расширенного JSON
  • Показ метаданных документа (размер, количество полей, максимальная глубина)
  • Список всех ObjectId и дат, найденных в документе
  • Отображение размеров двоичных полей и типов расширений
  • Hex-просмотрщик для инспектирования сырых двоичных данных

Примеры

Простой документ BSON

Попробовать →

Минимальный документ BSON с одним полем: {"hello":"world"}

16 00 00 00 02 68 65 6c 6c 6f 00 06 00 00 00 77 6f 72 6c 64 00 00

Hex-кодированный BSON

Попробовать →

Документ BSON со строкой, числом и логическим значением: {"name":"Alice","age":30,"active":true}

27 00 00 00 02 6e 61 6d 65 00 06 00 00 00 41 6c 69 63 65 00 10 61 67 65 00 1e 00 00 00 08 61 63 74 69 76 65 00 01 00

Советы

  • Вы можете вставить hex-кодированные данные BSON напрямую для их разбора.
  • Файлы BSON можно создать с помощью: mongoexport --collection=users --out=users.bson
  • ObjectId содержат временную метку; извлекайте с помощью: new ObjectId().getTimestamp()
  • BSON поддерживает больше типов, чем JSON: даты, двоичные данные, регулярные выражения и десятичные числа.
  • Максимальный размер документа BSON в MongoDB составляет 16 МБ.

Описание Парсер BSON

BSON (Binary JSON) — это формат двоичной сериализации, используемый внутри MongoDB для хранения и передачи документов. В то время как JSON представляет все данные в виде строк, чисел, логических значений, массивов и объектов, BSON расширяет это дополнительными типами, необходимыми базам данных: ObjectId (12-байтовый уникальный идентификатор), Date (временные метки с точностью до миллисекунды), Binary (произвольные массивы байтов), Decimal128 (точная десятичная арифметика) и регулярные выражения.

Документы BSON имеют префикс длины, что означает, что каждый документ и встроенный документ начинается с 4-байтового поля размера. Это позволяет парсерам пропускать документы без их полного декодирования, обеспечивая эффективное сканирование и индексирование. Каждый элемент помечен байтом типа, за которым следует имя поля в виде C-строки, а затем значение в кодировке, специфичной для типа.

MongoDB хранит документы как BSON внутри, передаёт их по проводному протоколу и экспортирует с помощью mongodump в файлы .bson. Понимание BSON необходимо для отладки приложений MongoDB, анализа файлов дампа и работы с проводным протоколом. Формат расширенного JSON обеспечивает человекочитаемое представление, сохраняющее информацию о типах BSON.

BSON не всегда меньше JSON. Короткие строки и маленькие числа могут быть фактически больше в BSON из-за накладных расходов на байт типа и префикс длины. Преимущество BSON не в размере, а в скорости — формат с префиксом длины обеспечивает быстрый обход, а расширенные типы предоставляют нативную поддержку дат, двоичных данных и десятичных чисел высокой точности без соглашений о кодировании.

ObjectId — это 12-байтовый тип BSON, используемый как значение _id по умолчанию в документах MongoDB. Он содержит 4-байтовую временную метку (секунды с начала эпохи), 5 байт случайного значения (уникального для машины/процесса) и 3-байтовый инкрементный счётчик. Такой дизайн гарантирует уникальность на распределённых серверах без какой-либо координации. Встроенная временная метка позволяет извлечь время создания документа с помощью ObjectId.getTimestamp().

Файлы дампа MongoDB (.bson), созданные с помощью mongodump, представляют собой сырые документы BSON, объединённые вместе. Вы можете вставить hex-кодированные данные BSON в этот инструмент для разбора отдельных документов. Также утилита bsondump (входящая в состав MongoDB Database Tools) может конвертировать файлы .bson в JSON через командную строку для массовой проверки.

← Вернуться ко всем инструментам