MongoDB में गहरी नेस्टिंग क्वेरी: डॉट नोटेशन
कई स्तरों तक नेस्टेड दस्तावेज़ों और सरणियों के अंदर फ़ील्ड्स को क्वेरी करने के लिए, डॉट नोटेशन का उपयोग करके पूरा पथ निर्दिष्ट करें: level1.level2.arrayField.embeddedField।
नमूना डेटा: 3-स्तरीय नेस्टिंग
> db.demo350.insertOne({
id: 101, Name: "Chris",
details: [{_id: 1, ClientNumber: "10001", ClientDetails: [{Name: "David", Age: 29}, {Name: "Bob", Age: 31}]}]
});
{ "acknowledged": true, "insertedId": ObjectId("5e553a68f8647eb59e5620b8") }
> db.demo350.insertOne({
id: 102, Name: "David",
details: [{_id: 2, ClientNumber: "10002", ClientDetails: [{Name: "Carol", Age: 42}, {Name: "John", Age: 37}]}]
});
{ "acknowledged": true, "insertedId": ObjectId("5e553a8ff8647eb59e5620b9") }
क्वेरी: ClientDetails.Name = "John" वाले दस्तावेज़ ढूंढें
> db.demo350.find({"details.ClientDetails.Name": "John"});
परिणाम
{ "_id": ObjectId("5e553a8ff8647eb59e5620b9"), "id": 102, "Name": "David", "details": [{"_id": 2, "ClientNumber": "10002", "ClientDetails": [{"Name": "Carol", "Age": 42}, {"Name": "John", "Age": 37}]}] }
डॉट नोटेशन details.ClientDetails.Name स्वचालित रूप से दोनों सरणी स्तरों (details और ClientDetails) को पार करता है और जांचता है कि क्या कोई भी नेस्टेड दस्तावेज़ में Name "John" है। पूरा दस्तावेज़ लौटाया जाता है।