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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *