2012-08-27 13 views
7

साथ सरणी में मान निकालने मैं निम्नलिखित दस्तावेज है:MongoDB: एकाधिक मापदंड

{_id : 1, numbers : [-1000, 1000]} 
{_id : 2, numbers : [5]} 

मैं एक प्रश्न है कि संख्या सरणी के बीच है कि में एक मूल्य है कि एक दस्तावेज़ मिलेगा पाने के लिए कोशिश कर रहा हूँ - 10 और 10 (इस मामले में, _id: 2)। हालांकि, जब मैं निम्न कोशिश करता हूं:

db.foo.find({numbers : $and : [{$gt : -10},{$lt : 10}]}) 

यह सभी दस्तावेज़ लौटाता है। क्या नक्शा कम किए बिना यह करना संभव है? धन्यवाद, -JWW

उत्तर

7

आप elemMatch $ का उपयोग करता है, तो एक सरणी में एक तत्व एक निर्दिष्ट मैच एक्सप्रेशन से मेल खाता जाँच करने के लिए कर सकते हैं।

इस मामले में, आप इसका इस्तेमाल एक दस्तावेज जिनकी संख्या सरणी एक तत्व है कि -10 और के बीच 10 है पाने के लिए कर सकते हैं: 2 दस्तावेज़:

db.foo.find({ numbers : { $elemMatch : { $gt : -10 , $lt : 10 } } }); 
यह सिर्फ _ id वापस आ जाएगी।

+0

बहुत अच्छा। धन्यवाद! – JWally