Node.JSでMongoDBを使用しています。日付とその他の行を含むコレクションがあります。日付はJavaScript Date
オブジェクトです。
このコレクションを日付で並べ替えるにはどうすればよいですか?
date
列を:stackoverflow.com/questions/5125521/...
Node.JSでMongoDBを使用しています。日付とその他の行を含むコレクションがあります。日付はJavaScript Date
オブジェクトです。
このコレクションを日付で並べ替えるにはどうすればよいですか?
date
列を:stackoverflow.com/questions/5125521/...
回答:
@JohnnyHKの回答を少し変更する
collection.find().sort({datefield: -1}, function(err, cursor){...});
多くのユースケースでは、最新のレコードが返されるようにしたいと考えています(最新の更新/挿入の場合など)。
Date
2.6.3では、関数を使用せずにオブジェクトをソートしようとしてもうまくいきません。
collection.find().sort(...).exec(function(err, cursor) {})
日付で並べ替えるのに特別なことは必要ありません。コレクションの目的の日付フィールドで並べ替えるだけです。
1.4.28のnode.jsネイティブドライバー用に更新されましdatefield
た。次のいずれかの方法を使用して昇順で並べ替えることができます。
collection.find().sort({datefield: 1}).toArray(function(err, docs) {...});
collection.find().sort('datefield', 1).toArray(function(err, docs) {...});
collection.find().sort([['datefield', 1]]).toArray(function(err, docs) {...});
collection.find({}, {sort: {datefield: 1}}).toArray(function(err, docs) {...});
collection.find({}, {sort: [['datefield', 1]]}).toArray(function(err, docs) {...});
'asc'
またはの'ascending'
代わりに使用することもでき1
ます。
降順で並べ替えるには'desc'
、の代わりに、、'descending'
または-1
を使用し1
ます。
Sushant Guptaの回答は少し古くなっており、もう動作しません。
次のスニペットは、このようになっているはずです。
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
toArray
。
collection.find().sort('date':1).exec(function(err, doc) {});
これは私のために働いた
日付形式が次のような場合:1989年2月14日---->問題が発生する可能性があります
次のようにISOdateを使用する必要があります。
var start_date = new Date(2012, 07, x, x, x);
----->結果------> ISODate( "2012-07-14T08:14:00.201Z")
今すぐこのようなクエリを使用してください:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
それでおしまい :)
TypeError: Collection.find(...).sort(...).toArray is not a function.
mongoose を使用すると、「toArray」を使用できず、エラーが発生しました。ToArray関数は、ネイティブMongoDB NodeJSドライバーのCursorクラスに存在します(参照)。
また、sortはパラメーターを1つしか受け入れないため、その中に関数を渡すことはできません。
これは私のために働きました(エミールによって答えられたように):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})