Что означает «0» в Bindata MongoDB (0, «e8menzzofymmd7wshdnrfjyek8m =»)?
Вопрос
Оболочка MongoDB печатает двоичные данные как строка, кодируемая BASE64, обернутая в то, что выглядит как функциональный вызов:
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
Что означает "0"?
Решение
http://docs.mongodb.org/manual/reference/mongodb-exted-json/#binary
DataType 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/#/speciation
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» по двум причинам:
- Функция Bindata интерпретирует эту строку как кодируемую строку Base64.
- Тип 2 потребует, чтобы первые 4 байта были Int32, содержащим длину байтового массива.
См. Bsonspec.org для получения дополнительной информации.
я полагать Они соответствуют BSON Подтипы:
subtype :: = " x00" Binary / generic | Функция " x01" | " x02" Бинарный (старый) | " x03" uuid | " x05" MD5 | « x80» определил пользователь
Глядя на это, кажется, что 0
почти всегда действительный выбор.