Dengan asumsi Anda telah menginstal mongodb versi terbaru, salah satu caranya adalah:
Sortcatatan berdasarkanpublished_datedalam urutan menurun.groupcatatan berdasarkancategorytheir . Untuk setiap grup, kumpulkan semua record bersama-sama dalam sebuah array.- Dalam kode sisi javascript/klien,
slice5 catatan teratas, dari setiap grup(kategori).
$slice tidak tersedia di sisi server $project operator pipa agregasi, yang mencegah kami melakukan operasi di sisi server.
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)};
});
result variabel sekarang akan menjadi array dokumen. Setiap dokumen mewakili setiap category dan pada gilirannya memiliki larik 5 . teratas catatan.