katakanlah saya menjalankan kueri ini dalam bahasa Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1});
Ini tidak berfungsi!
Penyortiran dalam bahasa Mongoose telah berkembang seiring rilis sehingga beberapa dari jawaban ini tidak lagi valid. Pada rilis 4.1.x dari Mongoose, jenis menurun di date
lapangan dapat dilakukan dengan salah satu cara berikut:
Room.find({}).sort('-date').exec(function(err, docs) { ... });
Room.find({}).sort({date: -1}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... });
Room.find({}).sort([['date', -1]]).exec(function(err, docs) { ... });
Room.find({}, null, {sort: '-date'}, function(err, docs) { ... });
Room.find({}, null, {sort: {date: -1}}, function(err, docs) { ... });
Untuk semacam ascending, menghilangkan -
awalan pada versi string atau penggunaan nilai-nilai 1
, asc
atau ascending
.
Query#find([criteria], [callback])
. Saya pikir mungkin ada beberapa jabat tangan rahasia yang mengatakan "kriteria" bisa sampai tiga argumen, tetapi daftar jenis sebagai "Objek".find
metode yang salah dalam dokumen. LihatModel.find
.Module#property
notasi dan mencari#find
. Tampaknya tidak ada cara mudah untuk menavigasi atau mencari dokumen. Pencarian untuk menemukan hasil 187 hasil._id
bidang. Misalnya, untuk mendapatkan catatan terbaru, Anda dapat melakukan:await db.collection.findOne().sort({ _id: -1 });
Jawaban yang benar adalah:
sumber
Berhubungan dengan masalah ini hari ini menggunakan Mongoose 3.5 (.2) dan tidak ada jawaban yang cukup membantu saya memecahkan masalah ini. Cuplikan kode berikut berfungsi
Anda dapat mengirim parameter standar apa pun yang Anda perlukan
find()
(mis. Tempat klausa dan bidang kembali) tetapi tidak ada panggilan balik. Tanpa panggilan balik, ia mengembalikan objek kueri yang Anda rantaisort()
. Anda perlu meneleponfind()
lagi (dengan atau tanpa lebih banyak parameter - seharusnya tidak memerlukan alasan efisiensi) yang memungkinkan Anda untuk mendapatkan hasil yang ditetapkan dalam panggilan balik Anda.sumber
Saya melakukan ini:
Ini akan menunjukkan hal-hal terbaru terlebih dahulu.
sumber
$orderby
tidak digunakan lagi dalam MongoDB 3.2 sehingga tidak boleh digunakan lagi.Harus bekerja juga
EDIT:
Anda juga dapat mencoba menggunakan ini jika Anda mendapatkan kesalahan
sort() only takes 1 Argument
:sumber
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
Solusi singkat:
sumber
Lihat apakah ini membantu> Bagaimana cara mengurutkan luwak?
Baca juga ini> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
sumber
Anda juga dapat mengurutkan berdasarkan
_id
bidang. Misalnya, untuk mendapatkan catatan terbaru, Anda dapat melakukannya,Ini jauh lebih cepat juga, karena saya lebih dari berani bertaruh bahwa
date
bidang Anda tidak diindeks.sumber