mongooseでこのクエリを実行するとします。
Room.find({}, function(err,docs){
}).sort({date:-1});
これは機能しません!
ソート Mongooseのリリースでは、これらの回答の一部が無効になるように進化しています。 Mongooseの4.1.xリリースの時点で、date
フィールドの降順ソートは、次のいずれかの方法で実行できます。
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) { ... });
昇順で並べ替える場合は、文字列バージョンの-
プレフィックスを省略するか、1
、asc
、またはascending
の値を使用します。
正解は次のとおりです。
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
今日、Mongoose 3.5(.2)を使用してこの問題に対処しており、この問題の解決に役立つ回答はありませんでした。次のコードスニペットはトリックを行います
Post.find().sort('-posted').find(function (err, posts) {
// user posts array
});
必要な標準パラメーターをfind()
(例:where句と戻りフィールド)に送信できますが、noコールバックです。コールバックがなければ、sort()
をチェーンしたQueryオブジェクトを返します。コールバックで結果セットを取得できるようにするために、find()
を再度呼び出す必要があります(これ以上のパラメーターを使用する場合も使用しない場合もありますが、効率上の理由から必要ありません)。
Post.find().sort({date:-1}, function(err, posts){
});
同様に動作するはずです
編集:
エラーsort() only takes 1 Argument
が表示された場合は、これを使用して試すこともできます。
Post.find({}, {
'_id': 0, // select keys to return here
}, {sort: '-date'}, function(err, posts) {
// use it here
});
私はこれをします:
Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
...
})
これにより、最新のものが最初に表示されます。
これが役立つかどうかを確認してください> mongooseでのソート方法
こちらもお読みください http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
短い解決策:
const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }
Room.find(query, projection, options).exec(function(err, docs) { ... });