Quando $group
dopo un $sort
nella pipeline, l'ordinamento precedente viene perso. Dovresti invece fare qualcosa del genere in modo che la data in base alla quale desideri ordinare sia disponibile dopo il raggruppamento:
db.summary.aggregate(
{$match: {circles: 2}},
{$group: {_id: '$cid', date: {$max: '$date'}}},
{$sort: {date: -1}});
risultato:
[ { _id: 2, date: 5 },
{ _id: 1, date: 2 },
{ _id: 3, date: 0 } ]
Aggiungi un $project
alla fine della pipeline se vuoi rimodellare l'output.