$group
の場合 $sort
の後 パイプラインでは、前の並べ替えは失われます。並べ替える日付がグループ化後に利用できるようにするには、代わりに次のようなことを行う必要があります。
db.summary.aggregate(
{$match: {circles: 2}},
{$group: {_id: '$cid', date: {$max: '$date'}}},
{$sort: {date: -1}});
結果:
[ { _id: 2, date: 5 },
{ _id: 1, date: 2 },
{ _id: 3, date: 0 } ]
$project
を追加します 出力の形状を変更する場合は、パイプラインの最後まで。