Sử dụng Aggregation Framework kết hợp toán tử $elemMatch. Tạo collection:
> 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") }
Hiển thị tất cả document:
> db.matchMultipleCriteriaDemo.find().pretty();
Kết quả:
{
"_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" }
]
}
Truy vấn khớp nhiều tiêu chí trong mảng (tìm document có EmployeeName="Bob" VÀ Language="C"):
> db.matchMultipleCriteriaDemo.aggregate({
"$match": {
"EmployeeDetails": {
"$elemMatch": { "EmployeeName": "Bob", "Language": "C" }
}
}
}).pretty();
Kết quả:
{
"_id": ObjectId("5cea3bf1ef71edecf6a1f68a"),
"EmployeeDetails": [
{ "EmployeeName": "David", "Salary": 55000, "Language": "C++" },
{ "EmployeeName": "Bob", "Salary": 61000, "Language": "C" }
]
}