$elemMatch से ऐरे के अंदर ऑब्जेक्ट क्वेरी करें
जब ऐरे में ऑब्जेक्ट्स हों और आपको ऐरे के किसी ऑब्जेक्ट के विशिष्ट फील्ड द्वारा क्वेरी करनी हो, तो $elemMatch ऑपरेटर का उपयोग करें।
सिंटैक्स
db.yourCollectionName.find({
"yourOuterFieldName": {
$elemMatch: {
"yourInnerFieldName": "yourValue"
}
}
}).pretty();
उदाहरण
> db.objectInAnArrayDemo.insertOne({
"StudentDetails": [
{"StudentName": "John", "StudentMessage": "Hi"},
{"StudentName": "Larry", "StudentMessage": "Hello"}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c92635d36de59bd9de06381") }
> db.objectInAnArrayDemo.insertOne({
"StudentDetails": [
{"StudentName": "Carol", "StudentMessage": "Hello"},
{"StudentName": "David", "StudentMessage": "Good Morning"}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c92637936de59bd9de06382") }
सभी दस्तावेज़:
> db.objectInAnArrayDemo.find().pretty();
"Good Morning" मैसेज वाले दस्तावेज़ खोजें
> db.objectInAnArrayDemo.find({ "StudentDetails": { $elemMatch: {"StudentMessage": "Good Morning"} } }).pretty();व्याख्या:
$elemMatchऐरे के उन एलिमेंट्स से मिलान करता है जो निर्दिष्ट सभी शर्तों को पूरा करते हैं। सरल मान खोज के लिए डॉट नोटेशन पर्याप्त है, लेकिन एक ही ऐरे एलिमेंट में कई शर्तों के लिए$elemMatchआवश्यक है।