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à:
-
Sort
các bản ghi dựa trênpublished_date
theo thứ tự giảm dần. -
group
các bản ghi dựa trêncategory
củ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,
slice
5 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ơ.