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