Khi trường là mảng object, MongoDB so sánh từng element. Dùng $gt và $lt để lọc document có ít nhất một element thỏa mãn khoảng giá trị.
Tạo collection demo147:
> db.demo147.insertOne({"Details":[{"Score":45},{"Score":46}]});
> db.demo147.insertOne({"Details":[{"Score":65},{"Score":86}]});
Tìm document có Score > 45 VÀ < 50:
> db.demo147.find({'Details.Score':{$gt:45,$lt:50}});
Kết quả: document 1 khớp (có Score=46):
{
"_id" : ObjectId("5e32fa21fdf09dd6d08539be"),
"Details" : [{"Score":45},{"Score":46}]
}
Lưu ý: Document 1 có Score=45 (không >45) nhưng Score=46 thỏa mãn, nên cả document được trả về. Dùng $elemMatch nếu cần cùng một element thỏa cả hai điều kiện.