Giả sử bạn đã cài đặt phiên bản mongodb mới nhất, một cách thực hiện là:
-
Sortcác bản ghi dựa trênpublished_datetheo thứ tự giảm dần. -
groupcác bản ghi dựa trêncategorycủa chúng . Đối với mỗi nhóm, hãy thu thập tất cả các bản ghi lại với nhau trong một mảng. - Trong mã phía máy khách / javascript,
slice5 bản ghi hàng đầu của mỗi nhóm (danh mục).
$slice không khả dụng ở phía máy chủ $project nhà điều hành đường ống tổng hợp, ngăn chúng tôi thực hiện hoạt động ở phía máy chủ.
var result = db.collection.aggregate(
[
{$sort:{"published_date":-1}},
{$group:{"_id":"$category","values":{$push:"$$ROOT"}}}
]
).map(function(doc){
return {"category":doc._id,"records":doc.values.slice(0,5)};
});
Kết quả result biến bây giờ sẽ là một mảng tài liệu. Mỗi tài liệu đại diện cho mỗi category và lần lượt có một mảng 5 hàng đầu hồ sơ.