Truy vấn document chứa object trong mảng thỏa mãn cả hai trường EmployeeName và EmployeeEmail.
Tạo collection demo144:
> db.demo144.insertOne({
"EmployeeDetails": [
{"EmployeeName":"Chris","EmployeeEmail":"Chris12@gmail.com"},
{"EmployeeName":"Bob","EmployeeEmail":"bo22@gmail.com"}
]
});
> db.demo144.insertOne({
"EmployeeDetails": [
{"EmployeeName":"David","EmployeeEmail":"david@gmail.com"},
{"EmployeeName":"Carol","EmployeeEmail":"Carol@gmail.com"}
]
});
Tìm document có EmployeeDetails chứa Name=David VÀ Email=david@gmail.com, projection chỉ lấy Name:
> db.demo144.find(
{"EmployeeDetails.EmployeeName":"David","EmployeeDetails.EmployeeEmail":"david@gmail.com"},
{"EmployeeDetails.EmployeeName":1}
);
Kết quả trả về cả 2 object trong mảng (project không lọc subdocument):
{
"_id" : ObjectId("5e32f1f5fdf09dd6d08539ba"),
"EmployeeDetails" : [
{"EmployeeName":"David"},
{"EmployeeName":"Carol"}
]
}
Lưu ý: Projection ở cấp document không lọc được element trong mảng. Dùng aggregate với $filter hoặc $elemMatch để chỉ lấy subdocument khớp.