Quando você
$group
após um $sort
no pipeline, a classificação anterior é perdida. Você teria que fazer algo assim para que a data pela qual você deseja classificar esteja disponível após o agrupamento:db.summary.aggregate(
{$match: {circles: 2}},
{$group: {_id: '$cid', date: {$max: '$date'}}},
{$sort: {date: -1}});
resultado:
[ { _id: 2, date: 5 },
{ _id: 1, date: 2 },
{ _id: 3, date: 0 } ]
Adicione um
$project
até o final do pipeline se você quiser remodelar a saída.