MongoDB : Comment trier par plusieurs champs
Vous pouvez utiliser la syntaxe suivante pour trier les documents dans MongoDB selon plusieurs champs :
db.myCollection.find().sort( { "field1": 1, "field2": -1 } )
Ce code particulier trie les documents de la collection appelée myCollection d’abord par champ 1 ascendant, puis par champ 2 décroissant.
Les exemples suivants montrent comment utiliser cette syntaxe avec une équipe de collection avec les documents suivants :
db.teams.insertOne({team: "Mavs", points: 30, rebounds: 8}) db.teams.insertOne({team: "Spurs", points: 30, rebounds: 12}) db.teams.insertOne({team: "Rockets", points: 20, rebounds: 7}) db.teams.insertOne({team: "Warriors", points: 25, rebounds: 5}) db.teams.insertOne({team: "Cavs", points: 25, rebounds: 9})
Exemple 1 : trier par plusieurs champs dans MongoDB (croissant)
Nous pouvons utiliser le code suivant pour trier les documents de la collection des équipes d’abord par « points » croissants puis par « rebonds » croissants :
db.teams.find().sort( { "points": 1, "rebounds": 1 } )
Cette requête renvoie les résultats suivants :
{ _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 }
A noter que les documents sont triés par champ « points » croissant (du plus petit au plus grand) puis par champ « rebonds » croissant (du plus petit au plus grand).
Exemple 2 : Trier par plusieurs champs dans MongoDB (décroissant)
Nous pouvons utiliser le code suivant pour trier les documents de la collection des équipes d’abord par « points » décroissants puis par « rebonds » décroissants :
db.teams.find().sort( { "points": -1, "rebounds": -1 } )
Cette requête renvoie les résultats suivants :
{ _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 }
A noter que les documents sont triés par champ « points » décroissant (du plus grand au plus petit) puis par champ « rebonds » décroissant (du plus grand au plus petit).
Remarque : Vous pouvez trouver la documentation complète de la fonction de tri ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :
MongoDB : Comment trier par date
MongoDB : Comment regrouper par et compter
MongoDB : Comment regrouper par plusieurs champs