Forudsat at du har den seneste version af mongodb installeret, er en måde at gøre det på:
Sort
posterne baseret påpublished_date
i faldende rækkefølge.group
posterne baseret på derescategory
. For hver gruppe skal du samle alle posterne i et array.- I javascript-/klientsidekoden
slice
de 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.