MongoDBで実際に妥当なクエリを実行できるように、スキーマを変更することをお勧めします。
差出人:
{
"userId": "12347",
"settings": {
"SettingA": "blue",
"SettingB": "blue",
"SettingC": "green"
}
}
宛先:
{
"userId": "12347",
"settings": [
{ name: "SettingA", value: "blue" },
{ name: "SettingB", value: "blue" },
{ name: "SettingC", value: "green" }
]
}
次に、"settings.value"
でインデックスを作成できます 、次のようなクエリを実行します:
db.settings.ensureIndex({ "settings.value" : 1})
db.settings.find({ "settings.value" : "blue" })
変更は本当に簡単です...設定名と設定値を完全にインデックス可能なフィールドに移動し、設定のリストを配列として保存します。
スキーマを変更できない場合は、@ JohnnyHKのソリューションを試すことができますが、パフォーマンスの点で基本的に最悪のケースであり、インデックスでは効果的に機能しないことに注意してください。