Dùng $gt trên trường lồng trong mảng (dot notation)
Khi mảng chứa object, bạn có thể truy vấn các phần tử thỏa mãn điều kiện so sánh bằng ký hiệu dấu chấm (dot notation).
Dữ liệu điểm số lồng nhau
> db.demo317.insertOne({
'id': 101,
'details': [
{'Score': 78, Name: "Chris"},
{'Score': 88, Name: "David"}
]
});
> db.demo317.insertOne({
'id': 102,
'details': [
{'Score': 90, Name: "Chris"},
{'Score': 91, Name: "David"}
]
});
Tìm document có Score > 89
> db.demo317.find({"details.Score": {$gt: 89}});
Kết quả
{
"_id": ObjectId("..."),
"id": 102,
"details": [
{"Score": 90, "Name": "Chris"},
{"Score": 91, "Name": "David"}
]
}
Lưu ý quan trọng: Truy vấn này trả về toàn bộ document nếu ít nhất một phần tử thỏa mãn. Mảng details vẫn chứa tất cả phần tử gốc. Để lọc phần tử trong mảng, hãy dùng $elemMatch trong projection hoặc aggregation.