Forudsat at du har den seneste version af mongodb installeret, er en måde at gøre det på:
Sortposterne baseret påpublished_datei faldende rækkefølge.groupposterne baseret på derescategory. For hver gruppe skal du samle alle posterne i et array.- I javascript-/klientsidekoden
slicede 5 bedste poster i hver gruppe(kategori).
$slice er ikke tilgængelig på serversiden $project aggregeringspipeline-operatør, som afholder os fra at udføre operationen på serversiden.
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 vil nu være en række dokumenter. Hvert dokument repræsenterer hver category og til gengæld have en række af top 5 optegnelser.