したがって、最初に$binary
をオフにします およびBinData
基本的に同じもので、異なる方法で書かれ、表現されています。あなたの例とこのリファレンスを使用して、「MongoShell」モードでそのように書くことができます:
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
または、次のようになる「厳密な」モードの場合:
{ "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" }
さて、ここでのタイプ3は、実際にはBSON仕様による(バイナリタイプの)サブタイプ3を指します。これは、これが「UUID(古い)」サブタイプであることを意味します。上記の参照によると、文字列自体は実際にはbase64
です。 バイナリ文字列の表現。このため(私は推測しています)robomongo
基本的にUUIDを変換し、データを参照しているときに表示します。代わりに、mongo
で手動で実行してみましょう。 シェル、最初にそれを16進数に変換します:
> var foo = BinData(3, "AAGOBh3pqkWvtaK8AO2U9w==")
> foo.hex()
00018e061de9aa45afb5a2bc00ed94f7
それでは、それをUUIDコンストラクターにプラグインして、逆変換されるかどうかを確認しましょう。
> var uuid = new UUID("00018e061de9aa45afb5a2bc00ed94f7")
> uuid
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")
そして、それは-すべてのrobomongo
読みやすくするためにダッシュを追加しています。完全を期すために、他の例では、ダッシュを削除してUUIDを作成し、BinData
を表示します。 バージョンを作成して元に戻す:
> var bar = UUID("d72f21fe47808040ab3da1fb01045d3a")
> bar
BinData(3,"1y8h/keAgECrPaH7AQRdOg==")
> bar.hex()
d72f21fe47808040ab3da1fb01045d3a
したがって、あなたがする必要があるのは、ノード内のbase64エンコーディング間で自分で変換することです。 node.js
がありません テストする環境ですが、サイトの他の場所で以前にカバーされているようです。
編集:
これは、バイナリを16進UUIDに変換するNode.JSの動作関数です:
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