Förutsatt att du har den senaste versionen av mongodb installerad, är ett sätt att göra det:
Sortposterna baserat påpublished_datei fallande ordning.groupposterna baserat på derascategory. För varje grupp, samla alla poster i en array.- I javascript-/klientsidans kod,
slicede 5 bästa posterna för varje grupp(kategori).
$slice är inte tillgänglig på serversidan $project aggregeringspipeline-operatör, som hindrar oss från att utföra operationen på serversidan.
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 kommer nu att vara en uppsättning dokument. Varje dokument representerar varje category och har i sin tur en array med topp 5 rekord.