MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Cadre d'agrégation Mongo, trier puis grouper ne fonctionne pas

Lorsque vous $group après un $sort dans le pipeline, le tri précédent est perdu. Vous devriez faire quelque chose comme ça à la place pour que la date que vous voulez trier soit disponible après le regroupement :

db.summary.aggregate(
    {$match: {circles: 2}},
    {$group: {_id: '$cid', date: {$max: '$date'}}},
    {$sort: {date: -1}});

résultat :

[ { _id: 2, date: 5 }, 
  { _id: 1, date: 2 }, 
  { _id: 3, date: 0 } ]

Ajouter un $project à la fin du pipeline si vous souhaitez remodeler la sortie.