$elemMatch ऑपरेटर के साथ ऐरे एलिमेंट्स पर एकाधिक शर्तें लागू करें
जब आपको किसी ऐरे के अंदर ऐसे एलिमेंट्स ढूंढने हों जो एक साथ कई शर्तों को पूरा करते हों, तो $elemMatch ऑपरेटर का उपयोग करें। यह सुनिश्चित करता है कि ऐरे का एक ही एलिमेंट सभी निर्दिष्ट मापदंडों से मेल खाए।
उदाहरण: संग्रह बनाना
> db.matchMultipleCriteriaDemo.insertOne({
"EmployeeDetails": [
{"EmployeeName": "Chris", "Salary": 45000, "Language": "Java"},
{"EmployeeName": "Robert", "Salary": 41000, "Language": "Python"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cea3bf0ef71edecf6a1f689") }
> db.matchMultipleCriteriaDemo.insertOne({
"EmployeeDetails": [
{"EmployeeName": "David", "Salary": 55000, "Language": "C++"},
{"EmployeeName": "Bob", "Salary": 61000, "Language": "C"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cea3bf1ef71edecf6a1f68a") }
सभी डॉक्यूमेंट्स देखना
> db.matchMultipleCriteriaDemo.find().pretty();
{
"_id": ObjectId("5cea3bf0ef71edecf6a1f689"),
"EmployeeDetails": [
{"EmployeeName": "Chris", "Salary": 45000, "Language": "Java"},
{"EmployeeName": "Robert", "Salary": 41000, "Language": "Python"}
]
}
{
"_id": ObjectId("5cea3bf1ef71edecf6a1f68a"),
"EmployeeDetails": [
{"EmployeeName": "David", "Salary": 55000, "Language": "C++"},
{"EmployeeName": "Bob", "Salary": 61000, "Language": "C"}
]
}
कई शर्तों से मिलान करने की क्वेरी
यहां हम EmployeeName: "Bob" और Language: "C" दोनों शर्तों को एक ही ऐरे एलिमेंट पर लागू कर रहे हैं:
> db.matchMultipleCriteriaDemo.aggregate({
"$match": {
"EmployeeDetails": {
"$elemMatch": {
"EmployeeName": "Bob",
"Language": "C"
}
}
}
}).pretty();
आउटपुट:
{
"_id": ObjectId("5cea3bf1ef71edecf6a1f68a"),
"EmployeeDetails": [
{"EmployeeName": "David", "Salary": 55000, "Language": "C++"},
{"EmployeeName": "Bob", "Salary": 61000, "Language": "C"}
]
}
केवल वही डॉक्यूमेंट वापस आया जिसमें ऐरे का एक एलिमेंट दोनों शर्तों को पूरा करता है।