Mongodb: come ordinare in base a più campi


Puoi utilizzare la seguente sintassi per ordinare i documenti in MongoDB in base a più campi:

 db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )

Questo particolare codice ordina i documenti nella raccolta chiamata myCollection prima in base al campo 1 ascendente, quindi in base al campo 2 discendente.

I seguenti esempi mostrano come utilizzare questa sintassi con un team di riscossione con i seguenti documenti:

 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})

Esempio 1: ordinamento per più campi in MongoDB (ascendente)

Possiamo utilizzare il seguente codice per ordinare i documenti nella raccolta Teams prima aumentando i “punti” e poi aumentando i “rimbalzi”:

 db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )

Questa query restituisce i seguenti risultati:

 { _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 }

Si noti che i documenti vengono ordinati aumentando il campo “punti” (dal più piccolo al più grande) e quindi aumentando il campo “rimbalzi” (dal più piccolo al più grande).

Esempio 2: ordinamento per più campi in MongoDB (discendente)

Possiamo utilizzare il seguente codice per ordinare i documenti nella raccolta Teams prima diminuendo i “punti” e poi diminuendo i “rimbalzi”:

 db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )

Questa query restituisce i seguenti risultati:

 { _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 }

Si noti che i documenti vengono ordinati decrescendo il campo “punti” (dal più grande al più piccolo) quindi decrescendo il campo “rimbalzi” (dal più grande al più piccolo).

Nota : puoi trovare la documentazione completa per la funzione di ordinamento qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in MongoDB:

MongoDB: come ordinare per data
MongoDB: come raggruppare e contare
MongoDB: come raggruppare per più campi

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *