sederhana, collection.find (). sort ({datefield: 1}, function (err, cursor) {...}); atau Anda juga bisa menggunakan collection.find (). sort ({datefield: -1}, function (err, cursor) {...});
Apa yang ingin Anda masukkan ke dalam fungsinya? Hanya mencoba mengurutkan Dateobjek tanpa fungsi tidak berhasil untuk saya di 2.6.3.
Sam Brightman
@ SamBrightman Fungsi itu hanyalah panggilan balik. Apa pun yang ingin Anda lakukan dengan hasil kueri, letakkan logika tersebut di dalam callback Anda. Anda dapat membaca lebih lanjut tentang apa itu callback dan bagaimana cara kerjanya untuk mempelajari pemrograman berbasis peristiwa.
Sushant Gupta
Tentu, saya tahu apa itu panggilan balik. Saya hanya melihat persyaratan penyortiran di pertanyaan dan semua jawaban memberikan panggilan balik. Pada saat yang sama, penyortiran tidak berhasil untuk saya, jadi saya pikir mungkin Anda harus melakukan pekerjaan tambahan dalam fungsi tersebut.
Sam Brightman
1
@SamBrightEmail Oh ok. Untuk kenyamanan Anda bisa eksplisit dan berantai seperticollection.find().sort(...).exec(function(err, cursor) {})
Sushant Gupta
5
dikatakan sort () hanya membutuhkan 1 Argumen
Jitendra Pancholi
39
Menyortir menurut tanggal tidak memerlukan sesuatu yang istimewa. Cukup urutkan menurut kolom tanggal koleksi yang diinginkan.
Diperbarui untuk driver asli 1.4.28 node.js, Anda dapat mengurutkan naik datefieldmenggunakan salah satu cara berikut:
@Tokopedia Saya tidak ingat skenario pastinya, tetapi musim panas lalu saya mencoba membuat jenis itu bekerja dengan cuplikan Sushant dan itu tidak berhasil untuk saya. Mungkin karena kurang toArraypart.
krikara
Ini sebenarnya adalah jawaban yang salah, memberikan hasil yang salah di node.js
Dengan luwak saya tidak dapat menggunakan 'toArray', dan mendapatkan kesalahan: TypeError: Collection.find(...).sort(...).toArray is not a function.
Fungsi toArray ada di kelas Cursor dari driver Native MongoDB NodeJS ( referensi ).
Juga sort menerima hanya satu parameter, jadi Anda tidak bisa melewatkan fungsi Anda di dalamnya.
Ini berhasil untuk saya (seperti yang dijawab oleh Emil ):
collection.find().sort('-date').exec(function(error, result){// Your code})
date
kolom: stackoverflow.com/questions/5125521/…Jawaban:
Sedikit modifikasi untuk jawaban @JohnnyHK
Dalam banyak kasus penggunaan kami ingin memiliki catatan terbaru untuk dikembalikan (seperti untuk pembaruan / sisipan terbaru).
sumber
Date
objek tanpa fungsi tidak berhasil untuk saya di 2.6.3.collection.find().sort(...).exec(function(err, cursor) {})
Menyortir menurut tanggal tidak memerlukan sesuatu yang istimewa. Cukup urutkan menurut kolom tanggal koleksi yang diinginkan.
Diperbarui untuk driver asli 1.4.28 node.js, Anda dapat mengurutkan naik
datefield
menggunakan salah satu cara berikut:'asc'
atau'ascending'
bisa juga digunakan sebagai pengganti1
.Untuk semacam menurun, penggunaan
'desc'
,'descending'
atau-1
di tempat1
.sumber
Ini akan mengurutkan koleksi Anda dalam urutan menurun berdasarkan tanggal penyisipan
sumber
Jawaban Sushant Gupta agak ketinggalan jaman dan tidak berfungsi lagi.
Cuplikan berikut seharusnya seperti ini sekarang:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
sumber
toArray
part.Ini berhasil untuk saya:
Menggunakan Node.js, Express.js, dan Monk
sumber
ini berhasil untuk saya
dirujuk https://docs.mongodb.org/getting-started/node/query/
sumber
Dengan luwak itu sesederhana:
sumber
Kotak tambahan [] Braket diperlukan untuk menyortir parameter agar bekerja.
sumber
jika format tanggal Anda seperti ini: 14/02/1989 ----> Anda mungkin menemukan beberapa masalah
Anda perlu menggunakan ISOdate seperti ini:
-----> hasilnya ------> ISODate ("2012-07-14T08: 14: 00.201Z")
sekarang gunakan saja query seperti ini:
itu dia :)
sumber
Dengan luwak saya tidak dapat menggunakan 'toArray', dan mendapatkan kesalahan:
TypeError: Collection.find(...).sort(...).toArray is not a function.
Fungsi toArray ada di kelas Cursor dari driver Native MongoDB NodeJS ( referensi ).Juga sort menerima hanya satu parameter, jadi Anda tidak bisa melewatkan fungsi Anda di dalamnya.
Ini berhasil untuk saya (seperti yang dijawab oleh Emil ):
sumber