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

MongoDB - Mengurutkan Hasil Kueri

Di MongoDB, Anda dapat mengurutkan hasil kueri dengan menggunakan limit() metode.

Di MongoDB, saat Anda menanyakan koleksi menggunakan db.collection.find() metode, Anda dapat menambahkan sort() metode untuk menentukan bagaimana hasil harus diurutkan. sort() metode menentukan urutan pengurutan untuk kursor.

Saat menggunakan sort() metode, Anda harus memberikan urutan pengurutan sebagai parameter. Ini harus berupa dokumen JSON yang mendefinisikan urutan pengurutan. Biasanya akan berisi satu atau lebih bidang, masing-masing diikuti oleh 1 atau -1 , tergantung pada apakah pengurutan harus dalam urutan menaik atau menurun.

Contoh

Pertama mari kita lakukan kueri tanpa menggunakan sort() (agar kita bisa melihat urutan naturalnya):

Tanpa sort()

db.musicians.find( )

Hasil:

{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
{ "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }
{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }

Dengan sort() dalam Urutan Ascending

Nilai 1 di sebelah nama bidang menentukan bahwa dokumen harus diurutkan berdasarkan bidang yang ditentukan dalam urutan menaik.

Di sini kami mengurutkan hasil berdasarkan nama dalam urutan menaik:

db.musicians.find( ).sort( { name: 1 } )

Hasil:

{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }
{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }

Dengan sort() dalam Urutan Menurun

Nilai -1 di sebelah nama bidang menentukan urutan menurun.

Di sini kami mengurutkan hasil berdasarkan nama dalam urutan menurun:

db.musicians.find( ).sort( { name: -1 } )

Hasil:

{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }
{ "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
{ "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }
{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }

Beberapa Bidang

Anda dapat mengurutkan berdasarkan beberapa bidang. Pisahkan saja setiap bidang dengan koma. Ketika Anda melakukan ini, dokumen akan diurutkan berdasarkan bidang pertama yang ditentukan, lalu yang berikutnya, dan seterusnya.

Di sini, kami mengurutkan berdasarkan instrumen bidang, diikuti oleh lahir bidang. Jika dua atau lebih musisi memainkan alat musik yang sama, lahir bidang menentukan bagaimana mereka diurutkan relatif satu sama lain.

db.musicians.find( ).sort( { instrument: 1, born: 1 } )

Hasil:

{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }
{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }
{ "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }

Dan hanya untuk melihat bagaimana bidang kedua dapat memengaruhi pesanan, alihkan ke nilai negatif (turun):

db.musicians.find( ).sort( { instrument: 1, born: -1 } )

Hasil:

{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
{ "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 }
{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
{ "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }

Urutkan dengan Batas

Anda dapat menggunakan sort() dengan limit() untuk mengurutkan hasil dari kumpulan hasil terbatas.

Di sini kami membatasi hasil menjadi 3 dokumen:

db.musicians.find( ).limit(3).sort( { name: 1, born: -1 } )

Hasil:

{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }

Jika kita mengganti nama untuk urutan menurun:

db.musicians.find( ).limit(3).sort( { name: -1, born: -1 } )

Hasil:

{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }
{ "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 }
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }

Perhatikan bahwa dalam kasus ini, lahir tidak berpengaruh, karena tidak pernah ada lebih dari satu hasil untuk nama yang diberikan.

Membandingkan Berbagai Jenis

Saat membandingkan nilai dari tipe BSON yang berbeda, MongoDB menggunakan urutan perbandingan berikut, dari terendah hingga tertinggi:

  1. MinKey (tipe internal)
  2. Nol
  3. Angka (int, long, ganda)
  4. Simbol, String
  5. Objek
  6. Array
  7. BinData
  8. Id Objek
  9. Boolean
  10. Tanggal
  11. Stempel waktu
  12. Ekspresi Reguler
  13. MaxKey (tipe internal)

Perhatikan bahwa bidang yang tidak ada diperlakukan sama sebagai nilai nol (atau objek BSON kosong).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pencarian mongodb data musim semi untuk tanggal ISO

  2. Meteor mongo memperbarui susunan bersarang

  3. Masukkan file json ke mongodb

  4. Server MongoDB masih dapat diakses tanpa kredensial

  5. Di MongoDB bagaimana cara mengembalikan hanya sebagian dari array?