डॉट नोटेशन का उपयोग करके गहरी खोज
डबल (या बहु-स्तरीय) नेस्टेड सरणी में मान खोजने के लिए डॉट नोटेशन का उपयोग करके फ़ील्ड पथ निर्दिष्ट करें।
उदाहरण: डबल नेस्टेड सरणी के साथ दस्तावेज़
> db.doubleNestedArrayDemo.insertOne(
{
"StudentId" : "1000",
"StudentName" : "Larry",
"StudentDetails" : [
{
"ProjectName" : "Online Banking",
"ProjectDetails" : [
{ "TechnologyUsed" : "Java" },
{ "TechnologyUsed" : "MySQL in Backend" }
]
}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5c992bd7330fd0aa0d2fe4cc") }
> db.doubleNestedArrayDemo.insertOne(
{
"StudentId" : "1001",
"StudentName" : "Robert",
"StudentDetails" : [
{
"ProjectName" : "Student Web Tracker",
"ProjectDetails" : [
{ "TechnologyUsed" : "Django Framework" },
{ "TechnologyUsed" : "MongoDB in Backend" }
]
}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5c992cdb330fd0aa0d2fe4cd") }
डेटा देखना
> db.doubleNestedArrayDemo.find().pretty()
डबल नेस्टेड सरणी में "Java" खोजना
> db.doubleNestedArrayDemo.find({"StudentDetails.ProjectDetails.TechnologyUsed": "Java"}).pretty();
आउटपुट: केवल Larry का दस्तावेज़ लौटाता है क्योंकि उसके ProjectDetails में "Java" है।
व्याख्या: MongoDB स्वचालित रूप से सरणियों को पार करता है। StudentDetails.ProjectDetails.TechnologyUsed पथ दोनों सरणी स्तरों के माध्यम से पहुंचता है और किसी भी नेस्टेड ऑब्जेक्ट में "TechnologyUsed" फ़ील्ड की जांच करता है।
उन्नत: यदि आपको मिलान करने वाले विशिष्ट नेस्टेड तत्व को प्रोजेक्ट करने की आवश्यकता है, तो एग्रीगेशन में $elemMatch प्रोजेक्शन या $filter का उपयोग करें।