In MongoDB, de $orderBy
query modifier sorteert de resultaten van een zoekopdracht in oplopende of aflopende volgorde.
$orderBy
accepteert een document dat het te sorteren veld en de sorteervolgorde specificeert. De sorteervolgorde kan ofwel 1
. zijn voor oplopend of -1
voor afdalen.
$orderBy
is afgeschaft in de mongo
shell sinds v3.2. Gebruik de cursor.sort()
methode in plaats daarvan.
Voorbeeldgegevens
Stel dat we een verzameling hebben met de naam pets
met de volgende documenten:
{ "_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 }
Sorteren in oplopende volgorde
Om in oplopende volgorde te sorteren, gebruiken we 1
voor de sorteervolgorde.
Hieronder ziet u een voorbeeld van een zoekopdracht die gebruikmaakt van de $orderBy
query-modifier om die verzameling te sorteren op weight
veld in oplopende volgorde.
db.pets.find( { $query: {}, $orderBy: { weight: 1 } } )
Resultaat:
{ "_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 }
Sorteren in aflopende volgorde
Om in aflopende volgorde te sorteren, gebruiken we -1
voor de sorteervolgorde.
db.pets.find( { $query: {}, $orderBy: { weight: -1 } } )
Resultaat:
{ "_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 }
Een alternatieve vorm
De $orderBy
query modifier kan ook worden gebruikt met de volgende vorm:
db.pets.find()._addSpecial( "$orderby", { weight : 1 } )
Meer informatie
Zoals gezegd, de $orderBy
query-modifier is verouderd in de mongo
shell sinds v3.2. Gebruik de cursor.sort()
methode in plaats daarvan.
Zie de MongoDB-documentatie voor meer informatie.