Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm tài liệu MongoDB từ mảng con (sub-array)

Sử dụng ký pháp dấu chấm (dot notation) để truy cập mảng con. Tạo collection:

> 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") }

Hiển thị tất cả

> db.findDocumentDemo.find().pretty();

Tìm tài liệu có EmployeeDesignation = "Developer" VÀ Salary trong [45000, 105000]

> db.findDocumentDemo.find({
    'EmployeeDetails.EmployeeAppraisalTime.EmployeeDesignation': 'Developer',
    'EmployeeDetails.EmployeeAppraisalTime.Salary': { '$in': [45000, 105000] }
});

Kết quả (cả hai tài liệu đều khớp):

{
    "_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}
        ]
    }
}

Lưu ý: Truy vấn này khớp nếu ít nhất một phần tử trong mảng thỏa mãn cả hai điều kiện (Designation = Developer VÀ Salary trong danh sách).