Mongodb: como classificar por vários campos
Você pode usar a seguinte sintaxe para classificar documentos no MongoDB por vários campos:
 db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )
Este código específico classifica os documentos na coleção chamada myCollection primeiro pelo campo 1 em ordem crescente e depois pelo campo 2 em ordem decrescente.
Os exemplos a seguir mostram como usar essa sintaxe com uma equipe de cobrança com os seguintes documentos:
 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})
Exemplo 1: Classificar por vários campos no MongoDB (crescente)
Podemos usar o código a seguir para classificar os documentos na coleção do Teams primeiro aumentando os “pontos” e depois aumentando as “rejeições”:
 db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )
Esta consulta retorna os seguintes resultados:
 { _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 }
Observe que os documentos são classificados aumentando o campo “pontos” (do menor para o maior) e depois aumentando o campo “rebotes” (do menor para o maior).
Exemplo 2: Classificar por vários campos no MongoDB (decrescente)
Podemos usar o código a seguir para classificar os documentos na coleção de equipes primeiro diminuindo os “pontos” e depois diminuindo as “rejeições”:
 db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )
Esta consulta retorna os seguintes resultados:
 { _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 }
Observe que os documentos são classificados diminuindo o campo “pontos” (do maior para o menor) e depois diminuindo o campo “rebotes” (do maior para o menor).
Nota : Você pode encontrar a documentação completa da função sort aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:
 MongoDB: Como classificar por data
 MongoDB: Como agrupar e contar
MongoDB: Como agrupar por vários campos