2012-03-22 4 views
11

question के उत्तर में मुझे $ elemMatch का उपयोग करके सरणी मानों को खोजने के लिए एक दिलचस्प समाधान मिला।

हम हमारे संग्रह में निम्नलिखित दस्तावेज है:

{ 
    foo : [ { bar : "xy", baz : 1 }, 
      { bar : "a", baz : 10 } ] 
}, 
{ 
    foo : [ { bar : "xy", baz : 5 }, 
      { bar : "b", baz : 50 } ] 
} 

निम्न क्वेरी केवल पहला दस्तावेज मिलान हो जाएगा:

db.test.find({ 
    foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] } 
}); 

मैं कई अन्य उदाहरण के साथ यह कोशिश की और यह वास्तव में काम करता है। लेकिन $all ऑपरेटर के लिए आधिकारिक दस्तावेज इन दो प्रश्नों के संयोजन के बारे में कुछ भी नहीं कहता है।

क्या यह इरादा व्यवहार या बग है? या यह सिर्फ एक समस्या है कि दस्तावेज़ीकरण इस उपयोग के मामले को कवर नहीं करता है?

उत्तर

5

यह इच्छित व्यवहार है। दस्तावेज़ीकरण इस उपयोग के मामले को कवर नहीं करता है और हम इसे बेहतर बनाने के लिए इस पर काम कर रहे हैं। हालांकि, यह हर संभव क्वेरी संयोजन दस्तावेज करने के लिए मुश्किल है।

+2

जानकारी के लिए धन्यवाद। मैं समझता हूं कि प्रत्येक संयोजन को दस्तावेज करना मुश्किल है लेकिन यह जानना बहुत उपयोगी होगा कि कुछ ऑपरेटरों को जोड़ा जा सकता है। –

+0

क्या ऐसा करने का कोई तरीका है? –

संबंधित मुद्दे