इसके लिए एग्रीगेट () का इस्तेमाल करें। आइए पहले दस्तावेजों के साथ एक संग्रह बनाएं -
> db.demo418.insertOne(... {... "विवरण":[... {... "कंट्रीनाम":"यूएस", ... "मार्क्स":45...}, ... {... "देश का नाम":"अमेरिका",... "चिह्न":56...},...... ],... "नाम":"जॉन"...} ... );{ "स्वीकृत" :सच, "insertedId" :ObjectId("5e724324b912067e57771ae6")}> db.demo418.insertOne(... {... "विवरण":[... {... " देश का नाम":"अमेरिका",... "चिह्न":78...},... {... "देश का नाम":"यूके",... "चिह्न":97...},.. ....],... "नाम":"माइक"...}...);{ "स्वीकृत" :सच, "insertId" :ObjectId("5e724325b912067e57771ae7")}
संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें -
> db.demo418.find();
यह निम्नलिखित आउटपुट देगा -
{ "_id" :ObjectId("5e724324b912067e57771ae6"), "details" :[{"CountryName" :"US", "Marks" :45 }, { "CountryName" :"US", "Marks" :56 } ], "नाम" :"जॉन" }{ "_id" :ObjectId ("5e724325b912067e57771ae7"), "विवरण" :[ { "देश का नाम" :"अमेरिका", "चिह्न" :78 }, { "देश का नाम" :" यूके", "मार्क्स" :97 } ], "नाम" :"माइक" }
ऑब्जेक्ट फ़िल्टर करने के लिए क्वेरी निम्नलिखित है जहां नेस्टेड सरणी के सभी तत्व शर्त से मेल खाते हैं -
> db.demo418.aggregate([... {$अनविंड:"$details"},... {$group:{... _id:'$_id',... विवरण :{ $first :'$details' },... alldetails:{ $sum:1 },... alldetailsmatch:{ $sum:{ $cond:[ {$eq:['$details.CountryName', "US" ] } , 1, 0 ] } },... नाम:{ $प्रथम:'$नाम' }... }},... {$परियोजना:{... _id:1,... नाम:1, ... विवरण:1,... arrayValue:{ $cond:[ {$eq:['$alldetails', '$alldetailsmatch' ] }, 1, 0 ] }...}},... { $ मैच:{'arrayValue':1 }}...])
यह निम्नलिखित आउटपुट देगा -
{ "_id" :ObjectId("5e724324b912067e57771ae6"), "details" :{ "CountryName" :"US", "Marks" :45 }, "Name" :"John", "arrayValue" :1 }पूर्व>