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