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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *