MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

3 sposoby sortowania dokumentów w MongoDB

MongoDB udostępnia kilka sposobów sortowania dokumentów w określonej kolejności. Każdy z nich pozwala nam uporządkować dokumenty w kolejności rosnącej lub malejącej.

Istnieje również możliwość zamówienia wyników $text search – sortowanie według obliczonego textScore metadane w porządku malejącym.

Oto 3 sposoby sortowania dokumentów w MongoDB.

cursor.sort() Metoda

cursor.sort() Metoda określa kolejność, w jakiej zapytanie zwraca pasujące dokumenty.

Załóżmy, że mamy kolekcję o nazwie employees z następującymi dokumentami:

{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }

Oto przykład zwracania tych dokumentów posortowanych według ich salary pole w kolejności rosnącej, a także ich _id pole:

db.employees.find().sort( { salary: 1, _id: 1 } )

Wynik:

{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }

Tutaj użyliśmy 1 dla porządku rosnącego. Gdybyśmy chcieli go w porządku malejącym, po prostu użylibyśmy -1 zamiast tego.

Powód, dla którego dołączyłem _id pole w zamówieniu jest spowodowane tym, że jeśli dwóch lub więcej pracowników ma taką samą pensję, to _id pole może być użyte do sortowania tych dokumentów między sobą.

Choć może się to wydawać trywialne, uniemożliwi to MongoDB zwrócenie tych dokumentów w innej kolejności przy każdym uruchomieniu zapytania.

Możesz także sortować wyniki $text Szukaj. Zobacz MongoDB sort() na przykład.

$sort Etap potoku agregacji

Korzystając ze struktury potoku agregacji, możesz użyć $sort etap, aby posortować wszystkie dokumenty wejściowe i zwrócić je do potoku w posortowanej kolejności.

Oto jak możemy użyć $sort aby zwrócić ten sam wynik, co w poprzednim przykładzie. Poza tym posortujmy je malejąco zamów tym razem:

db.employees.aggregate(
   [
     { $sort : { salary : -1, _id: 1 } }
   ]
)

Wynik:

{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }

Możesz także sortować wyniki $text Szukaj. Zobacz MongoDB $sort na przykład.

$orderBy Modyfikator zapytania

$orderBy modyfikator zapytania może być używany w jednej z dwóch form.

Tak:

db.employees.find( { $query: {}, $orderBy: { salary: 1 } } )

Lub tak::

db.employees.find()._addSpecial( "$orderby", { salary : 1 } )

$orderBy modyfikator zapytania został przestarzały w mongo powłoki od wersji 3.2, ale zdecydowałem się ją tutaj umieścić. Więcej informacji znajdziesz w dokumentacji MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Usługa Mongodb się nie uruchamia

  2. Monitorowanie bazy danych za pomocą ClusterControl

  3. Jak wygenerować unikalny identyfikator obiektu w mongodb

  4. Zaktualizuj pole MongoDB przy użyciu wartości innego pola

  5. Jak zaimportować format pliku .bson na mongodb