Also, zuerst $binary
und BinData
sind im Grunde dasselbe, auf unterschiedliche Weise geschrieben/dargestellt. Mit Ihrem Beispiel und dieser Referenz können Sie es so im "Mongo Shell"-Modus schreiben:
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
Oder im "strengen" Modus wird das zu:
{ "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" }
Nun bezieht sich Typ 3 hier tatsächlich auf Subtyp 3 (des binären Typs) gemäß der BSON-Spezifikation, was bedeutet, dass dies ein „UUID (old)“-Subtyp ist. Gemäß der obigen Referenz ist die Zeichenfolge selbst tatsächlich ein base64
Darstellung einer binären Zeichenkette. Aus diesem Grund (ich schließe daraus) robomongo
konvertiert im Grunde die UUID und zeigt sie für Sie an, wenn Sie die Daten durchsuchen. Lassen Sie uns versuchen, dies stattdessen manuell im mongo
zu tun Shell, indem Sie sie zuerst in hex:
> var foo = BinData(3, "AAGOBh3pqkWvtaK8AO2U9w==")
> foo.hex()
00018e061de9aa45afb5a2bc00ed94f7
Lassen Sie uns das jetzt in einen UUID-Konstruktor stecken und sehen, ob es zurückübersetzt wird:
> var uuid = new UUID("00018e061de9aa45afb5a2bc00ed94f7")
> uuid
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
Und das tut es - alles robomongo
tut, fügt einige Bindestriche für die Lesbarkeit hinzu. Nur der Vollständigkeit halber werde ich bei Ihrem anderen Beispiel die Bindestriche entfernen und eine UUID erstellen, die BinData
anzeigen Version und zurückkonvertieren:
> var bar = UUID("d72f21fe47808040ab3da1fb01045d3a")
> bar
BinData(3,"1y8h/keAgECrPaH7AQRdOg==")
> bar.hex()
d72f21fe47808040ab3da1fb01045d3a
Daher müssen Sie selbst zwischen der base64-Codierung im Knoten konvertieren. Ich habe keine node.js
Umgebung zu testen, aber es sieht so aus, als wäre das schon einmal an anderer Stelle auf der Seite behandelt worden.
BEARBEITEN:
Dies ist eine funktionierende Funktion in Node.JS, die die Binärdatei in Hex UUID:
konvertiertfunction Bin2HexUUID(bin){
var hex = new Buffer(bin, 'base64').toString('hex');
return hex.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, function (){
return arguments[1]+"-"+arguments[2]+"-"+arguments[3]+"-"+arguments[4]+"-"+arguments[5];
});
}
//use example
var binary_id = { "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" };
console.log(Bin2HexUUID(binary_id.$binary)); //00018e06-1de9-aa45-afb5-a2bc00ed94f7