MongoDB में डॉट नोटेशन से सब-अरे (नेस्टेड ऐरे) क्वेरी करना
नेस्टेड ऐरे के अंदर ऑब्जेक्ट के फ़ील्ड खोजने के लिए डॉट नोटेशन का उपयोग करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.findDocumentDemo.insertOne({
"EmployeeDetails": {
"EmployeeAppraisalTime": [
{"EmployeeDesignation": "Developer", "Salary": 45000},
{"EmployeeDesignation": "Tester", "Salary": 30000},
{"EmployeeDesignation": "HR", "Salary": 22000},
{"EmployeeDesignation": "Accountant", "Salary": 18000}
]
}
});
{ "acknowledged": true, "insertedId": ObjectId("5cd2c0f7b64f4b851c3a13a8") }
> db.findDocumentDemo.insertOne({
"EmployeeDetails": {
"EmployeeAppraisalTime": [
{"EmployeeDesignation": "Developer", "Salary": 105000},
{"EmployeeDesignation": "Tester", "Salary": 45000},
{"EmployeeDesignation": "HR", "Salary": 34000},
{"EmployeeDesignation": "Accountant", "Salary": 24000}
]
}
});
{ "acknowledged": true, "insertedId": ObjectId("5cd2c1d5b64f4b851c3a13a9") }
सभी डॉक्यूमेंट देखें
> db.findDocumentDemo.find().pretty();
{
"_id": ObjectId("5cd2c0f7b64f4b851c3a13a8"),
"EmployeeDetails": {
"EmployeeAppraisalTime": [
{"EmployeeDesignation": "Developer", "Salary": 45000},
{"EmployeeDesignation": "Tester", "Salary": 30000},
{"EmployeeDesignation": "HR", "Salary": 22000},
{"EmployeeDesignation": "Accountant", "Salary": 18000}
]
}
}
{
"_id": ObjectId("5cd2c1d5b64f4b851c3a13a9"),
"EmployeeDetails": {
"EmployeeAppraisalTime": [
{"EmployeeDesignation": "Developer", "Salary": 105000},
{"EmployeeDesignation": "Tester", "Salary": 45000},
{"EmployeeDesignation": "HR", "Salary": 34000},
{"EmployeeDesignation": "Accountant", "Salary": 24000}
]
}
}
सब-अरे में Developer और सैलरी 45000 या 105000 खोजें
> db.findDocumentDemo.find({
'EmployeeDetails.EmployeeAppraisalTime.EmployeeDesignation': 'Developer',
'EmployeeDetails.EmployeeAppraisalTime.Salary': { '$in': [45000, 105000] }
});
{ "_id": ObjectId("5cd2c0f7b64f4b851c3a13a8"), "EmployeeDetails": { "EmployeeAppraisalTime": [ {"EmployeeDesignation": "Developer", "Salary": 45000}, ... ] } }
{ "_id": ObjectId("5cd2c1d5b64f4b851c3a13a9"), "EmployeeDetails": { "EmployeeAppraisalTime": [ {"EmployeeDesignation": "Developer", "Salary": 105000}, ... ] } }
व्याख्या
EmployeeDetails.EmployeeAppraisalTime.EmployeeDesignation- ऐरे के हर ऑब्जेक्ट में चेक करता है$in: [45000, 105000]- सैलरी इन दोनों में से कोई एक हो- दोनों कंडीशन एक ही ऐरे एलिमेंट पर लागू होती हैं (MongoDB का डिफ़ॉल्ट व्यवहार)
नोट: $elemMatch के साथ अंतर
अगर आपको एक ही ऐरे एलिमेंट पर दोनों कंडीशन लागू करनी है तो $elemMatch उपयोग करें:
db.findDocumentDemo.find({
"EmployeeDetails.EmployeeAppraisalTime": {
$elemMatch: {
EmployeeDesignation: "Developer",
Salary: { $in: [45000, 105000] }
}
}
})