![](/img/trans.png)
[英]What object types are inserted by pymongo into mongodb as BinData?
[英]What does the “0” mean in MongoDB's BinData(0, “e8MEnzZoFyMmD7WSHdNrFJyEk8M=”)?
MongoDB shell将二进制数据打印为Base64编码的字符串,包含在看起来像函数调用的内容中:
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
“0”是什么意思?
http://docs.mongodb.org/manual/reference/mongodb-extended-json/#binary
BSON BinData数据类型通过shell中的类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亚型 :
subtype :: =“\\ x00”Binary / Generic | “\\ x01”功能| “\\ x02”二进制(旧)| “\\ x03”UUID | “\\ x05”MD5 | “\\ x80”用户定义
看来,看起来0
几乎总是一个有效的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.