回答:
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
。
find
ドキュメントで間違ったメソッドを見ています。を参照してくださいModel.find
。
Module#property
表記法を使っているのを見て、を検索しました#find
。ドキュメントをナビゲートまたは検索する簡単な方法はないようです。findを検索すると187件の結果が得られます。
_id
フィールドで並べ替えることもできます。例えば、最新のレコードを取得するために、あなたが行うことができます:await db.collection.findOne().sort({ _id: -1 });
正解は次のとおりです。
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句やreturnフィールドなど)は送信できますが、コールバックは送信できません。コールバックなしでは、連鎖するQueryオブジェクトを返しますsort()
。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
});
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
これが役立つかどうかを確認します> かどうかをマングースで並べ替える方法は?
こちらもお読みください > http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
Query#find([criteria], [callback])
です。「条件」には最大3つの引数を指定できるという秘密のハンドシェイクがあるかもしれないと思いましたが、タイプは「オブジェクト」としてリストされています。