Dengan asumsi Anda telah menginstal mongodb versi terbaru, salah satu caranya adalah:
Sort
catatan berdasarkanpublished_date
dalam urutan menurun.group
catatan berdasarkancategory
their . Untuk setiap grup, kumpulkan semua record bersama-sama dalam sebuah array.- Dalam kode sisi javascript/klien,
slice
5 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.