मैं एक स्कीमा परिवर्तन का सुझाव दूंगा ताकि आप वास्तव में 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 के समाधान का प्रयास कर सकते हैं, लेकिन सावधान रहें कि यह प्रदर्शन के मामले में मूल रूप से सबसे खराब स्थिति है और यह अनुक्रमणिका के साथ प्रभावी ढंग से काम नहीं करेगा।