Jadi, pertama-tama $binary
dan BinData
pada dasarnya adalah hal yang sama ditulis/diwakili dengan cara yang berbeda. Dengan menggunakan contoh Anda dan referensi ini, Anda dapat menulisnya seperti itu dalam mode "Mongo Shell":
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
Atau dalam mode "ketat" yang menjadi:
{ "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" }
Sekarang, tipe 3 di sini sebenarnya mengacu pada subtipe 3 (dari tipe biner) per spesifikasi BSON yang berarti ini adalah subtipe "UUID (lama)". Per referensi di atas, string itu sendiri sebenarnya adalah base64
representasi dari string biner. Karena itu (saya menyimpulkan) robomongo
pada dasarnya mengonversi UUID dan menampilkannya untuk Anda saat Anda menelusuri data. Mari kita coba melakukannya secara manual di mongo
shell, pertama dengan mengubahnya menjadi hex:
> var foo = BinData(3, "AAGOBh3pqkWvtaK8AO2U9w==")
> foo.hex()
00018e061de9aa45afb5a2bc00ed94f7
Sekarang, mari kita tancapkan itu ke konstruktor UUID dan lihat apakah itu diterjemahkan kembali:
> var uuid = new UUID("00018e061de9aa45afb5a2bc00ed94f7")
> uuid
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
Dan memang benar - semua robomongo
lakukan adalah menambahkan beberapa tanda hubung agar mudah dibaca. Hanya untuk kelengkapan, dengan contoh Anda yang lain, saya akan menghapus tanda hubung dan membuat UUID, tunjukkan BinData
versi dan konversi kembali:
> var bar = UUID("d72f21fe47808040ab3da1fb01045d3a")
> bar
BinData(3,"1y8h/keAgECrPaH7AQRdOg==")
> bar.hex()
d72f21fe47808040ab3da1fb01045d3a
Oleh karena itu, yang perlu Anda lakukan adalah mengonversi antara pengkodean base64 di node sendiri. Saya tidak memiliki node.js
lingkungan untuk diuji, tetapi sepertinya itu telah dibahas sebelumnya di tempat lain di situs.
EDIT:
Ini adalah fungsi kerja di Node.JS yang mengubah biner menjadi UUID Hex:
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