Macrolinux прав, но вы должны быть осторожны с его примером, поскольку он будет работать, но случайно.
Первый аргумент для BinData () - это двоичный подтип BSON, который, как уже упоминалось, является одним изследующее:
generic: \x00 (0)
function: \x01 (1)
old: \x02 (2)
uuid_old: \x03 (3)
uuid: \x04 (4)
md5: \x05 (5)
user: \x80 (128)
Это просто помощники, так что десериализатор может интерпретировать двоичные данные по-разному, в зависимости от того, что эти байты представляют за исключением для подтипа 2, который похож на общий подтип, нохранит int32, представляющий длину байтового массива как первые 4 байта данных.
Теперь, чтобы увидеть, почему пример неверен, вы заметите, что вызов BinData (2, "1234") не сохраняетдвоичный файл, представляющий строку «1234» по двум причинам:
- Функция BinData интерпретирует эту строку как строку в кодировке base64.
- Тип 2 потребует, чтобы первые 4 байта былиint32, содержащий длину байтового массива.
См. bsonspec.org для получения дополнительной информации.