नेस्टेड $elemMatch का उपयोग करके गहरे नेस्टेड ऐरे से एलिमेंट निकालें
जब ऐरे कई लेवल तक नेस्टेड हों, तो प्रत्येक लेवल पर $elemMatch का उपयोग करके विशिष्ट एलिमेंट को फ़िल्टर और प्रोजेक्ट करें।
उदाहरण: संग्रह बनाना
> db.particularElementDemo.insertOne({
"GroupId": "Group-1",
"UserDetails": [
{
"UserName": "John",
"UserOtherDetails": [
{
"UserEmailId": "John123@gmail.com",
"UserFriendName": [{"Name": "Chris"}]
},
{
"UserEmailId": "John22@hotmail.com",
"UserFriendName": [{"Name": "Robert"}]
}
]
}
]
});
{ "acknowledged": true, "insertedId": 100 }
सभी डॉक्यूमेंट्स देखना
> db.particularElementDemo.find().pretty();
{
"_id": 100,
"GroupId": "Group-1",
"UserDetails": [
{
"UserName": "John",
"UserOtherDetails": [
{"UserEmailId": "John123@gmail.com", "UserFriendName": [{"Name": "Chris"}]},
{"UserEmailId": "John22@hotmail.com", "UserFriendName": [{"Name": "Robert"}]}
]
}
]
}
नेस्टेड ऐरे से विशिष्ट एलिमेंट निकालने की क्वेरी
UserFriendName.Name: "Robert" वाले एलिमेंट को प्रोजेक्ट करें:
> db.particularElementDemo.find(
{
'UserDetails': {
$elemMatch: {
'UserOtherDetails': {
$elemMatch: {
'UserFriendName': { $elemMatch: {"Name": "Robert"} }
}
}
}
}
},
{"UserDetails.UserOtherDetails.UserFriendName.Name": 1}
);
आउटपुट:
{
"_id": 100,
"UserDetails": [
{
"UserOtherDetails": [
{"UserFriendName": [{"Name": "Chris"}]},
{"UserFriendName": [{"Name": "Robert"}]}
]
}
]
}
नेस्टेड $elemMatch प्रत्येक लेवल पर फ़िल्टर करता है। प्रोजेक्शन केवल अनुरोधित पथ को शामिल करता है।