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