MongoDB में डॉट नोटेशन: नेस्टेड सरणी फ़ील्ड्स क्वेरी करना
एम्बेडेड दस्तावेज़ों की सरणी के अंदर फ़ील्ड्स को क्वेरी करने के लिए डॉट नोटेशन (arrayField.embeddedField) का उपयोग करें। MongoDB स्वचालित रूप से सरणी को "अनवाइंड" करता है और जांचता है कि क्या कोई भी तत्व शर्त पूरी करता है।
नमूना डेटा
> db.demo326.insertOne({
id: 101,
"ProductDetails": [
{"ProductId": "Prod-101", "ProductName": "Product-1"},
{"ProductId": "Prod-102", "ProductName": "Product-2"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5e516751f8647eb59e562074") }
> db.demo326.insertOne({
id: 103,
"ProductDetails": [
{"ProductId": "Prod-104", "ProductName": "Product-5"},
{"ProductId": "Prod-105", "ProductName": "Product-6"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5e516771f8647eb59e562075") }
क्वेरी: ProductId "Prod-104" वाले दस्तावेज़ ढूंढें
> db.demo326.find({"ProductDetails.ProductId": "Prod-104"});
परिणाम
{ "_id": ObjectId("5e516771f8647eb59e562075"), "id": 103, "ProductDetails": [ {"ProductId": "Prod-104", "ProductName": "Product-5"}, {"ProductId": "Prod-105", "ProductName": "Product-6"} ] }
दूसरा दस्तावेज़ वापस किया गया क्योंकि उसकी ProductDetails सरणी में एक तत्व है जिसका ProductId "Prod-104" है। महत्वपूर्ण: यह पूरे दस्तावेज़ को लौटाता है, न कि केवल मिलान वाला सरणी तत्व। केवल मिलान वाले तत्व को प्राप्त करने के लिए $elemMatch प्रोजेक्शन या एग्रीगेशन $filter का उपयोग करें।