を見て、クエリを書くことができます
{
"a": [
{
"keyName": "randomstringhere",
"setup": true
},
//...
]
}
のようなあなたのコレクションのスキーマを変更することができます必要なすべてのランダムキーを取得し、可変キー名のリストを取得した場合に$or
演算子を使用するクエリドキュメントをアセンブルします。
Map-Reduceを使用すると、操作の最初の部分が可能です。結果のコレクションで明確なを実行し、すべてのランダムなキーのリストを取得するには
mr = db.runCommand({
"mapreduce": "collection",
"map" : function() {
for (var key in this.a) { emit(key, null); }
},
"reduce" : function() { },
"out": "collectionKeys"
})
::次のMapReduce操作は_id値として、すべてのランダムキーを使用してcollectionKeysと呼ばれる別のコレクションに移入されます
db[mr.result].distinct("_id")
例出力リレー
["randomstring_1", "randomstring_2", "randomstring_3", "randomstring_4", ...]
さて、上記のリスト与え、あなたはクレアでクエリを組み立てることができますループ内でそのプロパティが設定されているオブジェクトを検索します。
db.collection.find(query)
ので、サブ文書のキーの上のリストを使用して、あなたは動的にはJavaScriptの使用して、上記構築することができます。
var query = {
"$or": [
{ "a.randomstring_1.setup": true },
{ "a.randomstring_2.setup": true },
{ "a.randomstring_3.setup": true }
]
};
あなたは、あなたのクエリで使用することができます。通常、クエリ文書は、この構造を持っていますmap()
方法: