MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

3 Cara Mengurutkan Dokumen di MongoDB

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sambungkan kembali dengan andal ke MongoDB

  2. Cara Menjatuhkan Database di MongoDB dari Command Line

  3. Setara $set MongoDb di Driver java-nya

  4. Atribut kreasi_waktu Mongoengine dalam Dokumen

  5. Bagaimana cara menghapus banyak koleksi mongodb sekaligus?