आपकी क्वेरी केवल उन सभी दस्तावेज़ों को लौटा रही है जिनमें modules
. है तत्व जहां name == 'foo'
. $elemMatch
. का उपयोग करने के लिए आउटपुट को फ़िल्टर करने के लिए, आपको इसे find
. के प्रोजेक्शन तर्क में उपयोग करने की आवश्यकता है क्वेरी के हिस्से के बजाय कॉल करें:
db.test.find({}, {modules: {$elemMatch: {name: 'foo'}}})
दोनों अवधारणाओं को संयोजित करने के लिए, आप क्वेरी में मिलान किए गए सरणी तत्व की अनुक्रमणिका को $
. के साथ संदर्भित कर सकते हैं :
db.test.find({modules: {$elemMatch: {name: 'foo'}}}, {'modules.$': 1})
किसी भी तरह से वापसी:
{
"_id": ObjectId("..."),
"modules": [
{
"name": "foo",
"mandatory": false,
"group": [
{
"name": "g1"
}
]
}
]
}
यदि आपको आउटपुट में शामिल अन्य फ़ील्ड की आवश्यकता है, तो उन्हें प्रोजेक्शन ऑब्जेक्ट में जोड़ें (उदा. name: 1
)।