Bạn đang trộn một vài phương pháp ở đây khi bạn có thể làm mọi thứ trong đường dẫn tổng hợp. Nếu không, vấn đề chỉ là làm cho các bước của bạn theo đúng thứ tự:
db.collection.aggregate([
{$sort: { createdOn: -1 }},
{$group: { _id: "$itemId",
createdOn: {$first: "$createdOn"},
field1: {$first: "$field1" },
field2: {$first: "$field2" }
}},
{$match: { field1: "foo" }}
])
Vì vậy, hãy sắp xếp trước cho các tài liệu mới nhất. Nhóm trên itemId
(đơn đặt hàng sẽ được duy trì cho $ đầu tiên), và sau đó lọc với $ khớp nếu bạn phải. Nhưng các tài liệu được nhóm của bạn sẽ là những tài liệu mới nhất.