MongoDBシェルを使用する場合、guidデータ型(コレクションで_idとして使用したもの)を使用するにはどうすればよいですか?.
次の形式は機能しません。
>db.person.find({"_id","E3E45566-AFE4-A564-7876-AEFF6745FF"});
ありがとう。
_id値を(文字列ではなく)BinDataのインスタンスと比較する必要があります。残念ながら、BinDataコンストラクターは16進文字列ではなくBase64文字列を取ります。
GUID値の最後に2桁の16進数がないため、この例では「00」と想定します。次の値は同等です。
16進数: "E3E45566-AFE4-A564-7876-AEFF6745FF00"(ダッシュは無視)
base64: "ZlXk4 + SvZKV4dq7/Z0X/AA =="
したがって、クエリは次のようになります。
> db.person.find({_ id:new BinData(3、 "ZlXk4 + SvZKV4dq7/Z0X/AA ==")})
バイナリサブタイプが正しく3に設定されていると想定しています。そうでない場合、データの作成にどのドライバーが使用されましたか?
あなたは簡単に使うことができます:
.find({ "_id" : CSUUID("E3E45566-AFE4-A564-7876-AEFF6745FF")})
次のように、クエリの前で次のjs関数を使用できます。
function LUUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // removes extra characters
return new UUID(hex); //creates new UUID
}
db.person.find({"_id" : LUUID("E3E45566-AFE4-A564-7876-AEFF6745FF"});
関数を.jsファイルに保存してロードするか、クエリを実行する前に開くことができます。結果から値をコピーする場合は、関数の名前を次のように変更する必要があります。