sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $orderBy

I MongoDB, $orderBy frågemodifierare sorterar resultaten av en fråga i stigande eller fallande ordning.

$orderBy accepterar ett dokument som anger fältet som ska sorteras och sorteringsordningen. Sorteringsordningen kan vara antingen 1 för stigande eller -1 för nedstigning.

$orderBy har fasats ut i mongo skal sedan v3.2. Använd cursor.sort() metod istället.

Exempeldata

Anta att vi har en samling som heter pets med följande dokument:

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

Sortera i stigande ordning

För att sortera i stigande ordning använder vi 1 för sorteringsordningen.

Nedan är ett exempel på en fråga som använder $orderBy frågemodifierare för att sortera den samlingen efter weight fältet i stigande ordning.

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 }

Sortera i fallande ordning

För att sortera i fallande ordning använder vi -1 för sorteringsordningen.

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 form

$orderBy query modifier kan också användas med följande form:

db.pets.find()._addSpecial( "$orderby", { weight : 1 } )

Mer information

Som nämnts, $orderBy frågemodifierare har fasats ut i mongo skal sedan v3.2. Använd cursor.sort() metod istället.

Se MongoDB-dokumentationen för mer information.


  1. Dynamisk sortering med Redis

  2. MongoDB:bästa designen för meddelandeapp

  3. Hur frågar man kapslade objekt?

  4. Hur man sammanfogar strängar i SQL