Что означает «0» в Bindata MongoDB (0, «e8menzzofymmd7wshdnrfjyek8m =»)?

StackOverflow https://stackoverflow.com/questions/9338989

  •  27-10-2019
  •  | 
  •  

Вопрос

Оболочка 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 почти всегда действительный выбор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top