नेस्टेड सरणी दस्तावेज़ों में केवल विशिष्ट फ़ील्ड प्राप्त करने के लिए, $ प्रोजेक्ट के साथ $filter का उपयोग करें। आइए दस्तावेजों के साथ एक संग्रह बनाएं -
> db.demo342.insertOne({... "Id":"101",... "details1" :{... "details2" :[... {... "details3" :[ ... {... "नाम":"माइक",... "देश का नाम":"अमेरिका"...},... {... "नाम":"डेविड",... "देश का नाम" " :"एयूएस"...},... {... "नाम":"बॉब",... "कंट्रीनाम":"यूके"...}...]...}... ]...}...}...);{ "स्वीकृत" :सच, "insertId" :ObjectId("5e53ef99f8647eb59e5620a9")}
संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें -
> db.demo342.find();
यह निम्नलिखित आउटपुट उत्पन्न करेगा -
{ "_id" :ObjectId("5e53ef99f8647eb59e5620a9"), "Id" :"101", "details1" :{ "details2" :[ { "details3" :[ { "Name" :"Mike", "CountryName " :"अमेरिका" }, { "नाम" :"डेविड", "देश का नाम" :"एयूएस" }, { "नाम" :"बॉब", "देश का नाम" :"यूके" } ] } ] } } }>नेस्टेड सरणी दस्तावेज़ों में केवल विशिष्ट फ़ील्ड प्राप्त करने के लिए क्वेरी निम्नलिखित है -
> db.demo342.aggregate([... {"$project":{... "details1":{... "details2":{... "$filter":{... " input":{... "$map":{... "इनपुट":"$details1.details2",... "in":{... "details3":{... "$filter" :{... "इनपुट":"$$this.details3",... "cond":{ "$eq":["$$this.Name", "Bob"] }...}.. }...}...}...},... "cond":{ "$ne":["$$this.details3", []] }...}...}. .. }... }}... ])यह निम्नलिखित आउटपुट उत्पन्न करेगा -
{ "_id" :ObjectId("5e53ef99f8647eb59e5620a9"), "details1" :{ "details2" :[ { "details3" :[ { "Name" :"Bob", "CountryName" :"UK" } ] } ] } }पूर्व>