Mongodb: jak sortować według wielu pól


Możesz użyć następującej składni, aby sortować dokumenty w MongoDB według wielu pól:

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

Ten konkretny kod sortuje dokumenty w kolekcji o nazwie myCollection najpierw według pola 1 rosnąco, a następnie według pola 2 malejąco.

Poniższe przykłady pokazują, jak używać tej składni w przypadku zespołu windykacyjnego z następującymi dokumentami:

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

Przykład 1: Sortuj według wielu pól w MongoDB (rosnąco)

Możemy użyć poniższego kodu, aby posortować dokumenty w kolekcji Teams , najpierw zwiększając „punkty”, a następnie zwiększając „odbicia”:

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

To zapytanie zwraca następujące wyniki:

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

Należy pamiętać, że dokumenty są sortowane według rosnącego pola „punkty” (od najmniejszego do największego), a następnie według zwiększania pola „odbicia” (od najmniejszego do największego).

Przykład 2: Sortuj według wielu pól w MongoDB (malejąco)

Możemy użyć poniższego kodu, aby posortować dokumenty w kolekcji zespołów , najpierw zmniejszając „punkty”, a następnie zmniejszając „odbicia”:

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

To zapytanie zwraca następujące wyniki:

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

Należy pamiętać, że dokumenty są sortowane według malejącego pola „punkty” (od największego do najmniejszego), a następnie malejącego pola „odbicia” (od największego do najmniejszego).

Uwaga : Pełną dokumentację funkcji sortowania znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak sortować według daty
MongoDB: Jak grupować i liczyć
MongoDB: Jak grupować według wielu pól

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *