sql >> Database >  >> NoSQL >> MongoDB

MongoDB $orderBy

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.


  1. Hybride cloud versus volledige openbare cloud - voor- en nadelen

  2. sql-query naar mongodb?

  3. Handleiding voor het gebruik van Apache HBase-poorten

  4. Redis-beheerpaneel