MongoDB的外殼打印二進制數據爲Base64編碼的字符串包裹在什麼看起來像一個函數調用:MongoDB的BinData中的「0」是什麼意思(0,「e8MEnzZoFyMmD7WSHdNrFJyEk8M =」)?
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
什麼是「0」是什麼意思?
MongoDB的外殼打印二進制數據爲Base64編碼的字符串包裹在什麼看起來像一個函數調用:MongoDB的BinData中的「0」是什麼意思(0,「e8MEnzZoFyMmD7WSHdNrFJyEk8M =」)?
"_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
我相信他們自己對應BSON subtypes:
亞型:: = 「\ x00的」 二進制/通用 | 「\ x01」功能 | 「\ x02」二進制(舊) | 「\ x03」UUID | 「\ x05」MD5 | 「\ x80」用戶自定義
看這個,看起來0
幾乎總是一個有效的選擇。
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瞭解更多信息。
有趣。這些亞型用於任何事情嗎? – Thilo 2012-02-18 07:03:08
我想是這樣:-)。詢問的最佳地點是BSON組織。明確地說,新的'\ x00'和歷史'\ x02'(http://groups.google.com/group/bson/browse_thread/thread/c45f78fba9311975)之間存在差異是有原因的。對於UUID和MD5(我的觀點)是爲了優化。兩者都是固定長度的十六進制(16字節/ 128位/ 32位十六進制數字,佈局位不同的UUID有'-')並且被廣泛使用,驅動程序實現者可以優化讀/寫。 – 2012-02-18 07:39:41
我不知道這裏的驅動程序可以優化什麼。所有的二進制類型都存儲爲'length(int32)子類型字節字節*'。固定長度與否,存儲長度。數據以原始字節(不是十六進制)存儲。也許一個數據驗證的選項?或者爲了顯示目的:UUID可以比'BinData(3,........)'更好地顯示? – Thilo 2012-02-18 09:29:35