Резултатите, върнати от конвейера за агрегиране, са просто обикновени обекти. Така че правите сортирането като етап на конвейер, а не като отделна операция:
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
}
);
Така че има различни оператори на конвейер, които могат да се използват за $group
или $sort
или $limit
и други неща също. Те могат да бъдат представени в произволен ред и толкова пъти, колкото е необходимо. Просто разбирането, че един етап на "тръбопровод" прелива резултати в следващия, върху който трябва да се действа.