{"colors.*.prestock" : {$gte:30}}
जैसी क्वेरी SERVER-267
के अनुसार संभव नहीं है , और मुझे संदेह है कि अगले वर्षों में इसका समर्थन किया जाएगा।
आपकी सबसे अच्छी शर्त है कि आप स्कीमा को एक सरणी में बदल दें:
colors: [
{ "color" : "Green", "instock" : 50, ... },
{ "color" : "Yellow", "instock" : 50, ... },
]
फिर आप क्वेरी कर सकते हैं
db.foo.find( {"colors.prestock" : {$gte:30}} )
ध्यान दें कि यह सभी रंगों सहित संपूर्ण ऑब्जेक्ट को वापस कर देगा, यानी वे भी जिनके लिए क्वेरी बाधा नहीं है। इसे एकत्रीकरण ढांचे का उपयोग करके हल किया जा सकता है, लेकिन फिर से, केवल $unwind
. का उपयोग करके जिसके लिए colors
. की भी आवश्यकता होती है एक सरणी बनने के लिए।