MongoDBのシェルは、関数呼び出しのように見えるものに包まれたBase64でエンコードされた文字列としてバイナリデータを出力します。MongoDBのBinData(0、 "e8MEnzZoFyMmD7WSHdNrFJyEk8M =")の "0"の意味は何ですか?
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
「0」とは何を意味するのでしょうか?
MongoDBのシェルは、関数呼び出しのように見えるものに包まれたBase64でエンコードされた文字列としてバイナリデータを出力します。MongoDBのBinData(0、 "e8MEnzZoFyMmD7WSHdNrFJyEk8M =")の "0"の意味は何ですか?
"_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
このスレッド
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
同様の質問です0
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の場合はを除きますが、それは汎用サブタイプに似ていますが、データの最初の4バイトとしてバイト配列の長さを表すint32を格納します。今
二つの理由の例が間違っているなぜあなたは(2、「1234」)BINDATAを呼び出すと、文字列を表すバイナリを格納していないことに注意しましょう「1234」を参照してくださいするには:
詳細については、bsonspec.orgを参照してください。
興味深い。それらのサブタイプは何にも使われていますか? – Thilo
私はそう思います:-)。尋ねるのに最適な場所はBSONグループです。正直なところ、新しい '\ x00'と歴史的な' \ x02'(http://groups.google.com/group/bson/browse_thread/thread/c45f78fba9311975)の間には違いがあります。 UUIDとMD5(私の意見)は最適化のためです。どちらも固定長の16進数(16バイト/ 128ビット/ 32桁の16進数、異なるUUIDのレイアウトビットは '-')で、幅広く使用され、ドライバの実装者は読み書きを最適化できます。 –
私はドライバーがここで最適化できるものはわかりません。すべてのバイナリ型は、 'length(int32)subtype-byte bytes *'として格納されます。長さが固定されているかどうかは、長さが格納されます。データは生のバイト(16進数ではなく)として格納されます。おそらくデータ検証のオプションですか?表示目的のために:UUIDは 'BinData(3、........)'よりも表示が綺麗でしょうか? – Thilo