MongoDB में एम्बेडेड डॉक्यूमेंट ऐरे के फ़ील्ड द्वारा क्वेरी
ऐरे के अंदर एम्बेडेड डॉक्यूमेंट के फ़ील्ड खोजने के लिए डॉट नोटेशन का उपयोग करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.embeddedDocumentDemo.insertOne({
"CustomerDetails": [
{"CustomerName": "Chris", "CustomerPurchasePrice": 3000},
{"CustomerName": "Robert", "CustomerPurchasePrice": 4500},
{"CustomerName": "David", "CustomerPurchasePrice": 1000}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd32347edc6604c74817ccd") }
डॉक्यूमेंट देखें
> db.embeddedDocumentDemo.find().pretty();
{
"_id": ObjectId("5cd32347edc6604c74817ccd"),
"CustomerDetails": [
{"CustomerName": "Chris", "CustomerPurchasePrice": 3000},
{"CustomerName": "Robert", "CustomerPurchasePrice": 4500},
{"CustomerName": "David", "CustomerPurchasePrice": 1000}
]
}
एम्बेडेड डॉक्यूमेंट में CustomerPurchasePrice = 4500 खोजें
> db.embeddedDocumentDemo.find({"CustomerDetails.CustomerPurchasePrice": 4500});
{ "_id": ObjectId("5cd32347edc6604c74817ccd"), "CustomerDetails": [ {"CustomerName": "Chris", "CustomerPurchasePrice": 3000}, {"CustomerName": "Robert", "CustomerPurchasePrice": 4500}, {"CustomerName": "David", "CustomerPurchasePrice": 1000} ] }
व्याख्या
- क्वेरी
CustomerDetails.CustomerPurchasePriceऐरे के हर ऑब्जेक्ट में चेक करती है - किसी भी एलिमेंट में 4500 मिलने पर पूरा डॉक्यूमेंट वापस आता है
- यहां Robert का परचेज प्राइस 4500 है
केवल मैचिंग एलिमेंट प्राप्त करने के लिए
पूरा डॉक्यूमेंट नहीं, केवल मैचिंग ऐरे एलिमेंट चाहिए तो:
$elemMatchप्रोजेक्शन में उपयोग करें- या एग्रीगेशन में
$filterउपयोग करें
उदाहरण: $elemMatch प्रोजेक्शन
db.embeddedDocumentDemo.find(
{"CustomerDetails.CustomerPurchasePrice": 4500},
{"CustomerDetails": { $elemMatch: {"CustomerPurchasePrice": 4500} }}
)