Среда MongoDB печатает двоичные данные в виде строки в кодировке Base64, завернутой в то, что выглядит как вызов функции:
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
Что означает "0"?
Среда MongoDB печатает двоичные данные в виде строки в кодировке Base64, завернутой в то, что выглядит как вызов функции:
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
Что означает "0"?
http://docs.mongodb.org/manual/reference/mongodb-extended-json/#binary
Тип данных BSON BinData представлен через класс BinData в оболочке. Запустите help misc
для получения дополнительной информации.
> new BinData(2, "1234")
BinData(2,"1234")
из оболочки
help misc
b = new BinData(subtype,base64str) create a BSON BinData value
0
в вашем случае есть подтип BSON
http://bsonspec.org/#/specification
binary ::= int32 subtype (byte*) Binary - The int32 is the number of bytes in the (byte*).
subtype ::= "\x00" Generic binary subtype
| "\x01" Function
| "\x02" Binary (Old)
| "\x03" UUID (Old)
| "\x04" UUID
| "\x05" MD5
| "\x80" User defined
Аналогичный вопрос в этой теме
http://groups.google.com/group/mongodb-dev/browse_thread/thread/1965aa234aa3ef1e
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", по двум причинам:
Для получения дополнительной информации см. bsonspec.org.
Я считаю, что они соответствуют подтекстам BSON:
подтип:: = "\ x00" Двоичный/Общий | Функция "\ x01" | "\ x02" Двоичный (старый) | "\ x03" UUID | "\ x05" MD5 | "\ x80" Определено пользователем
Глядя на это, кажется, что 0
почти всегда является правильным выбором.