Dus eerst $binary
en BinData
zijn in wezen hetzelfde geschreven / weergegeven op verschillende manieren. Met uw voorbeeld en deze referentie kunt u het zo schrijven in de "Mongo Shell"-modus:
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
Of in de "strikte" modus wordt dat:
{ "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" }
Type 3 verwijst hier eigenlijk naar subtype 3 (van het binaire type) volgens de BSON-specificatie, wat betekent dat dit een "UUID (oud)" subtype is. Volgens de bovenstaande referentie is de string zelf eigenlijk een base64
representatie van een binaire string. Hierdoor (ik leid het af) robomongo
is in feite het converteren van de UUID en het voor u weergeven wanneer u door de gegevens bladert. Laten we proberen dat handmatig te doen in de mongo
shell, eerst door het te converteren naar hex:
> var foo = BinData(3, "AAGOBh3pqkWvtaK8AO2U9w==")
> foo.hex()
00018e061de9aa45afb5a2bc00ed94f7
Laten we dat nu in een UUID-constructor pluggen en kijken of het terug wordt vertaald:
> var uuid = new UUID("00018e061de9aa45afb5a2bc00ed94f7")
> uuid
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
En dat doet het - allemaal robomongo
doet is het toevoegen van enkele streepjes voor de leesbaarheid. Voor de volledigheid, met uw andere voorbeeld zal ik de streepjes verwijderen en een UUID maken, de BinData
tonen versie en terug converteren:
> var bar = UUID("d72f21fe47808040ab3da1fb01045d3a")
> bar
BinData(3,"1y8h/keAgECrPaH7AQRdOg==")
> bar.hex()
d72f21fe47808040ab3da1fb01045d3a
Daarom moet u zelf converteren tussen de base64-codering in het knooppunt. Ik heb geen node.js
omgeving om te testen, maar het lijkt erop dat dit eerder elders op de site is behandeld.
BEWERKEN:
Dit is een werkende functie in Node.JS die het binaire bestand converteert naar Hex UUID:
function 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