sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $orderBy

V MongoDB, $orderBy dotazový modifikátor seřadí výsledky dotazu ve vzestupném nebo sestupném pořadí.

$orderBy přijímá dokument, který určuje pole k řazení a pořadí řazení. Pořadí řazení může být buď 1 pro vzestupné nebo -1 pro sestup.

$orderBy byl v mongo zastaralý shell od verze 3.2. Použijte cursor.sort() místo toho.

Ukázková data

Předpokládejme, že máme sbírku nazvanou pets s následujícími dokumenty:

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

Řadit vzestupně

K řazení ve vzestupném pořadí používáme 1 pro pořadí řazení.

Níže je uveden příklad dotazu, který používá $orderBy modifikátor dotazu k seřazení této kolekce podle weight pole ve vzestupném pořadí.

db.pets.find( { $query: {}, $orderBy: { weight: 1 } } )

Výsledek:

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

Řadit sestupně

Pro řazení v sestupném pořadí používáme -1 pro pořadí řazení.

db.pets.find( { $query: {}, $orderBy: { weight: -1 } } )

Výsledek:

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

Alternativní formulář

$orderBy modifikátor dotazu lze také použít s následujícím formulářem:

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

Další informace

Jak již bylo zmíněno, $orderBy Modifikátor dotazu byl v mongo zastaralý shell od verze 3.2. Použijte cursor.sort() místo toho.

Další informace naleznete v dokumentaci MongoDB.


  1. Publikování/odběr Redis:podívejte se, které kanály jsou aktuálně přihlášeny k odběru

  2. Jak vypočítat průběžný součet pomocí agregace?

  3. Upgrade na ClusterControl Enterprise Edition

  4. Redis lua, kdy to opravdu použít?