Frage

Die MongoDB-Shell druckt Binärdaten als Basis64-kodierter Zeichenfolge aus, die in einen Funktionsaufruf eingewickelt sind:

"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")

Was bedeutet das "0"?

War es hilfreich?

Lösung

http://docs.mongodb.org/manual/reference/mongodb-extended-json/#binary

Der BSON Bindata -Datenatyp wird über Klassenbindata in der Shell dargestellt. Laufen help misc für mehr Informationen.

> new BinData(2, "1234")
BinData(2,"1234")

Aus der Hülle

help misc
b = new BinData(subtype,base64str)  create a BSON BinData value

Das 0 In Ihrem Fall ist der BSON -Subtyp

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

Ähnliche Frage zu diesem Thread

http://groups.google.com/group/mongodb-dev/browse_thread/thread/1965aa234aa3ef1e

Andere Tipps

Macrolinux hat Recht, aber Sie müssen mit seinem Beispiel vorsichtig sein, da es funktionieren wird, aber zufällig.

Das erste Argument für Bindata () ist der BSON -Binär -Subtyp, der, wie erwähnt wurde, eines der folgenden ist:

generic:  \x00 (0)
function: \x01 (1)
old:      \x02 (2)
uuid_old: \x03 (3)
uuid:     \x04 (4)
md5:      \x05 (5)
user:     \x80 (128)

Dies sind nur Helfer, damit der Deserializer die Binärdaten je nachdem, was diese Bytes darstellen, unterschiedlich interpretieren kann außer Für den Subtyp 2, der wie der generische Subtyp ist, speichert jedoch ein INT32, das die Länge des Byte -Arrays als die ersten 4 Datenbytes darstellt.

Um jetzt zu sehen, warum das Beispiel falsch ist, werden Sie feststellen, dass das Aufrufen von Bindata (2, "1234") die Binärdatei nicht aus zwei Gründen "1234" speichert:

  • Die Bindata -Funktion interpretiert diese Zeichenfolge als Base64 -codierte Zeichenfolge.
  • Typ 2 würde erfordern, dass die ersten 4 Bytes ein INT32 sind, der die Länge des Byte -Arrays enthält.

Weitere Informationen finden Sie unter bsonspec.org.

ich glauben Sie entsprechen der BSON -Subtypen:

subtyp :: = " x00" binär / generic | " x01" -Funktion | " x02" binär (alt) | " x03" uUid | " x05" Md5 | " x80" Benutzer definiert

Wenn man sich das ansieht, scheint es das 0 ist fast immer eine gültige Wahl.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top