Was bedeutet die "0" bedeutet in MongoDB ist BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=")?
Die MongoDB-shell druckt binäre Daten als Base64-kodierten string, eingewickelt in was aussieht wie ein Funktionsaufruf:
"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")
Was bedeutet die "0" zu bedeuten?
InformationsquelleAutor Thilo | 2012-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://docs.mongodb.org/manual/reference/mongodb-extended-json/#binary
Dem BSON-BinData-Datentyp dargestellt wird über die Klasse BinData in der shell. Führen Sie
help misc
für weitere Informationen.aus der Schale
Den
0
in Ihrem Fall ist das BSON-Subtyphttp://bsonspec.org/#/specification
Ähnliche Frage in diesem thread
http://groups.google.com/group/mongodb-dev/browse_thread/thread/1965aa234aa3ef1e
Ich denke so :-). Der beste Ort für Fragen ist das BSON-Gruppe. Definitiv, es gibt einen Grund für den Unterschied zwischen dem neuen
\x00
und die historische\x02
(groups.google.com/group/bson/browse_thread/thread/...). Für UUID und MD5 (meiner Meinung nach) ist für die Optimierung. Beide sind Feste Länge hexadezimaler ( 16-byte/128-bit/32 hexadezimal-Ziffern, layout bisschen anders UUID hat-
) und weit verbreitet, Fahrer implementors könnte die Optimierung des lese - /Schreibzugriff.Ich weiß nicht was für ein Treiber könnte optimieren hier. Alle der binary-Typen gespeichert sind, als
length(int32) subtype-byte bytes*
. Feste Länge haben oder nicht, die Länge ist gespeichert. Und die Daten werden gespeichert, als raw-bytes (nicht hexadezimal). Vielleicht eine option für die Daten-Validierung? Oder für die Anzeige Zwecke: UUID angezeigt werden könnte schöner alsBinData(3,........)
?Der erste link hier nicht mehr diskutiert BinData überhaupt. Auch dieser link nicht definieren, was die Werte bedeuten, aber es tut Dokument Mongo ' s agreement mit dem BSON-spec: docs.mongodb.org/manual/reference/mongodb-extended-json
InformationsquelleAutor
Macrolinux ist richtig, aber Sie müssen vorsichtig sein, mit seinem Beispiel, wie es funktionieren wird, aber durch Zufall.
Das erste argument BinData() ist das BSON-Binär-Subtyp, die, wie bereits erwähnt, ist einer der folgenden:
Diese sind nur Helfer, so dass die deserializer interpretieren kann, werden die binären Daten unterschiedlich, je nachdem, was die bytes darstellen außer für den Subtyp 2, das ist wie der generic-Subtyp, aber speichert ein int32-Wert repräsentiert die Länge des byte-array als die ersten 4 bytes der Daten.
Nun zu verstehen, warum das Beispiel ist falsch, Sie ' ll beachten Sie, dass der Aufruf BinData(2, "1234") nicht speichern die binäre vertreten die Zeichenfolge "1234" aus zwei Gründen:
Sehen bsonspec.org für weitere Informationen.
InformationsquelleAutor Tyler Brock
Ich glauben, Sie entsprechen den BSON-Subtypen:
Betrachten, scheint es, dass
0
ist fast immer eine gültige Wahl.InformationsquelleAutor Damien_The_Unbeliever