Wyniki zwrócone z potoku agregacji są zwykłymi obiektami. Więc robisz sortowanie jako etap potoku, a nie jako oddzielną operację:
Recommend.aggregate(
[
// Grouping pipeline
{ "$group": {
"_id": '$roomId',
"recommendCount": { "$sum": 1 }
}},
// Sorting pipeline
{ "$sort": { "recommendCount": -1 } },
// Optionally limit results
{ "$limit": 5 }
],
function(err,result) {
// Result is an array of documents
}
);
Tak więc istnieją różne operatory potoku, których można użyć do $group
lub $sort
lub $limit
i inne rzeczy. Można je prezentować w dowolnej kolejności i tyle razy, ile jest to wymagane. Samo zrozumienie, że jeden etap „rurociągu” przechodzi w następny, na którym należy działać.