I MongoDB er $orderBy
query modifier sorterer resultaterne af en forespørgsel i stigende eller faldende rækkefølge.
$orderBy
accepterer et dokument, der angiver det felt, der skal sorteres, og sorteringsrækkefølgen. Sorteringsrækkefølgen kan enten være 1
for stigende eller -1
til nedstigning.
$orderBy
er blevet forældet i mongo
skal siden v3.2. Brug cursor.sort()
metode i stedet.
Eksempel på data
Antag, at vi har en samling kaldet pets
med følgende dokumenter:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 }
Sortér i stigende rækkefølge
For at sortere i stigende rækkefølge bruger vi 1
for sorteringsrækkefølgen.
Nedenfor er et eksempel på en forespørgsel, der bruger $orderBy
forespørgselsmodifikator for at sortere denne samling efter weight
felt i stigende rækkefølge.
db.pets.find( { $query: {}, $orderBy: { weight: 1 } } )
Resultat:
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 }
Sortér i faldende rækkefølge
For at sortere i faldende rækkefølge bruger vi -1
for sorteringsrækkefølgen.
db.pets.find( { $query: {}, $orderBy: { weight: -1 } } )
Resultat:
{ "_id" : 7, "name" : "Punch", "type" : "Kangaroo", "weight" : 200 } { "_id" : 6, "name" : "Hop", "type" : "Kangaroo", "weight" : 130 } { "_id" : 5, "name" : "Bruce", "type" : "Kangaroo", "weight" : 100 } { "_id" : 9, "name" : "Ruff", "type" : "Dog", "weight" : 30 } { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 8, "name" : "Snap", "type" : "Cat", "weight" : 12 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
En alternativ formular
$orderBy
forespørgselsmodifikator kan også bruges med følgende form:
db.pets.find()._addSpecial( "$orderby", { weight : 1 } )
Flere oplysninger
Som nævnt er $orderBy
query modifier er blevet forældet i mongo
skal siden v3.2. Brug cursor.sort()
metode i stedet.
Se MongoDB-dokumentationen for mere information.