MongoDB menyediakan beberapa cara untuk mengurutkan dokumen dalam urutan tertentu. Masing-masing memungkinkan kita untuk mengurutkan dokumen dalam urutan menaik atau menurun.
Ada juga opsi untuk memesan hasil $text
pencarian – mengurutkan berdasarkan textScore
yang dihitung metadata dalam urutan menurun.
Berikut adalah 3 cara untuk mengurutkan dokumen di MongoDB.
The cursor.sort()
Metode
cursor.sort()
metode menentukan urutan kueri mengembalikan dokumen yang cocok.
Misalkan kita memiliki koleksi yang disebut employees
dengan dokumen sebagai berikut:
{ "_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 }
Berikut ini contoh pengembalian dokumen yang diurutkan berdasarkan salary
bidang dalam urutan menaik, dan juga _id
bidang:
db.employees.find().sort( { salary: 1, _id: 1 } )
Hasil:
{ "_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 }
Di sini, kami menggunakan 1
untuk urutan naik. Jika kita menginginkannya dalam urutan menurun, kita cukup menggunakan -1
sebagai gantinya.
Alasan saya menyertakan _id
kolom dalam pemesanan adalah karena, jika dua atau lebih karyawan memiliki gaji yang sama, maka _id
kolom dapat digunakan untuk menyortir dokumen-dokumen itu di antara mereka sendiri.
Meskipun ini mungkin tampak sepele, ini akan mencegah MongoDB mengembalikan dokumen tersebut dalam urutan yang berbeda setiap kali kita menjalankan kueri.
Anda juga dapat mengurutkan hasil dari $text
Cari. Lihat MongoDB sort()
sebagai contoh.
$sort
Tahap Pipa Agregasi
Saat menggunakan kerangka pipa agregasi, Anda dapat menggunakan $sort
tahap untuk menyortir semua dokumen masukan dan mengembalikannya ke jalur pipa dalam urutan yang diurutkan.
Inilah cara kita dapat menggunakan $sort
untuk mengembalikan hasil yang sama seperti contoh sebelumnya. Kecuali, mari kita urutkan dalam descending pesan kali ini:
db.employees.aggregate(
[
{ $sort : { salary : -1, _id: 1 } }
]
)
Hasil:
{ "_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 }
Anda juga dapat mengurutkan hasil dari $text
Cari. Lihat MongoDB $sort
sebagai contoh.
The $orderBy
Pengubah Kueri
$orderBy
pengubah kueri dapat digunakan dalam salah satu dari dua bentuk.
Seperti ini:
db.employees.find( { $query: {}, $orderBy: { salary: 1 } } )
Atau seperti ini::
db.employees.find()._addSpecial( "$orderby", { salary : 1 } )
$orderBy
pengubah kueri tidak digunakan lagi di mongo
shell sejak v3.2, tetapi saya tetap memutuskan untuk memasukkannya di sini. Lihat dokumentasi MongoDB untuk informasi lebih lanjut.