$elemMatch ऑपरेटर का उपयोग करके ऐरे में विशिष्ट एलिमेंट ढूंढें
$elemMatch ऑपरेटर उन डॉक्यूमेंट्स से मेल खाता है जिनमें एक ऐरे फ़ील्ड होता है जिसमें कम से कम एक एलिमेंट सभी निर्दिष्ट क्वेरी मापदंडों से मेल खाता है।
उदाहरण: संग्रह बनाना
> db.filterBySeveralElementsDemo.insertOne(
{
"_id": 100,
"StudentDetails": [
{"StudentName": "John", "StudentCountryName": "US"},
{"StudentName": "Carol", "StudentCountryName": "UK"}
]
}
);
{ "acknowledged": true, "insertedId": 100 }
> db.filterBySeveralElementsDemo.insertOne(
{
"_id": 101,
"StudentDetails": [
{"StudentName": "Sam", "StudentCountryName": "AUS"},
{"StudentName": "Chris", "StudentCountryName": "US"}
]
}
);
{ "acknowledged": true, "insertedId": 101 }
सभी डॉक्यूमेंट्स देखना
> db.filterBySeveralElementsDemo.find().pretty();
{
"_id": 100,
"StudentDetails": [
{"StudentName": "John", "StudentCountryName": "US"},
{"StudentName": "Carol", "StudentCountryName": "UK"}
]
}
{
"_id": 101,
"StudentDetails": [
{"StudentName": "Sam", "StudentCountryName": "AUS"},
{"StudentName": "Chris", "StudentCountryName": "US"}
]
}
कई ऐरे एलिमेंट्स द्वारा फ़िल्टर करने की क्वेरी
StudentName: "Sam" और StudentCountryName: "AUS" दोनों वाले एलिमेंट वाले डॉक्यूमेंट्स ढूंढें:
> db.filterBySeveralElementsDemo.find({
StudentDetails: {
$elemMatch: {
StudentName: 'Sam',
StudentCountryName: 'AUS'
}
}
}).pretty();
आउटपुट:
{
"_id": 101,
"StudentDetails": [
{"StudentName": "Sam", "StudentCountryName": "AUS"},
{"StudentName": "Chris", "StudentCountryName": "US"}
]
}
केवल वही डॉक्यूमेंट वापस आया जिसमें ऐरे का एक एलिमेंट दोनों शर्तों को पूरा करता है।