इसके लिए, $unwind के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं:
> db.demo583.insert([
{
"details1": [
{
"details2": [
{ "isMarried": true, "Name": "Chris" },
{ "isMarried": true, "Name": "Bob" }
]
},
{
"details2": [
{ "isMarried": false, "Name": "Chris" },
{ "isMarried": true, "Name": "Mike" }
]
}
]
}
]); BulkWriteResult({ "writeErrors": [], "writeConcernErrors": [], "nInserted": 1, "nUpserted": 0, "nMatched": 0, "nModified": 0, "nRemoved": 0, "upserted": [] })
find() मेथड की मदद से कलेक्शन के सभी दस्तावेज प्रदर्शित करें:
> db.demo583.find();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e91d3c4fd2d90c177b5bcc1"), "details1" : [ { "details2" : [ { "isMarried" : true, "Name" : "Chris" }, { "isMarried" : true, "Name" : "Bob" } ] }, { "details2" : [ { "isMarried" : false, "Name" : "Chris" }, { "isMarried" : true, "Name" : "Mike" } ] } ] }
सब-डॉक्यूमेंट द्वारा सब-डॉक्यूमेंट्स फ़िल्टर करने के लिए क्वेरी (isMarried=true और Name=Chris):
> var q= [
{ "$match": { "details1.details2.isMarried": true, "details1.details2.Name": "Chris" } },
{ "$unwind": "$details1" },
{ "$unwind": "$details1.details2" },
{ "$match": { "details1.details2.isMarried": true, "details1.details2.Name": "Chris" } }
];
> db.demo583.aggregate(q).pretty();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e91d3c4fd2d90c177b5bcc1"), "details1" : { "details2" : { "isMarried" : true, "Name" : "Chris" } } }