MongoDB में नेस्टेड ऐरे मानों को $elemMatch के साथ क्वेरी करना
गहरे नेस्टेड ऐरे संरचनाओं में विशिष्ट मानों वाले दस्तावेज़ खोजने के लिए नेस्टेड $elemMatch ऑपरेटर्स का उपयोग करें।
सैंपल डेटा बनाना (जटिल नेस्टेड संरचना)
> db.fetchingArrayValuesDemo.insertOne({
"StudentName": "David",
"StudentDetails": [{
"FatherName": "Bob",
"CountryName": "US",
"Favourite": [{
"Teacher": "DAVID",
"Subject": ["MySQL", "MongoDB", "Java"],
"Marks": [50, 60, 65]
}]
}]
});
> db.fetchingArrayValuesDemo.insertOne({
"StudentName": "Robert",
"StudentDetails": [{
"FatherName": "Sam",
"CountryName": "AUS",
"Favourite": [{
"Teacher": "MIKE",
"Subject": ["Python", "C", "C++"],
"Marks": [76, 89, 91]
}]
}]
});
दस्तावेज़ देखना
> db.fetchingArrayValuesDemo.find();
आउटपुट (जटिल नेस्टेड संरचना):
नेस्टेड $elemMatch क्वेरी: Teacher="DAVID" वाले दस्तावेज़ खोजें
> db.fetchingArrayValuesDemo.find({ StudentDetails: { $elemMatch: { Favourite: { $elemMatch: { Teacher: "DAVID" } } } } });आउटपुट (केवल David का दस्तावेज़):
$elemMatch क्यों आवश्यक है?
बिना
$elemMatchके, क्वेरी अलग-अलग ऐरे एलिमेंट्स से शर्तों को पूरा कर सकती है। नेस्टेड$elemMatchसुनिश्चित करता है कि एक ही नेस्टेड एलिमेंट सभी शर्तों को पूरा करे।सरल क्वेरी (यदि संरचना ज्ञात हो)
एग्रीगेशन विकल्प (अधिक नियंत्रण)