Node.JSでMongoDBを使用しています。日付と他の行を含むコレクションがあります。日付はJavaScriptDate
オブジェクトです。
このコレクションを日付で並べ替えるにはどうすればよいですか?
@JohnnyHKの回答にわずかな変更を加えます
collection.find().sort({datefield: -1}, function(err, cursor){...});
多くのユースケースでは、最新のレコードを返す必要があります(最新の更新/挿入など)。
db.getCollection('').find({}).sort({_id:-1})
これにより、挿入日に基づいてコレクションが降順で並べ替えられます
日付で並べ替えるのに特別なことは必要ありません。コレクションの目的の日付フィールドで並べ替えるだけです。
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) {});
これは私のために働いた:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Node.js、Express.js、Monkを使用する
collection.find().sort('date':1).exec(function(err, doc) {});
これは私のために働いた
マングースの場合、それは次のように簡単です。
collection.find().sort('-date').exec(function(err, collectionItems) {
// here's your code
})
パラメータを並べ替えるには、追加の角かっこ[]かっこが必要です。
collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
日付形式が次のような場合: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) {...}
それでおしまい :)
mongooseでは、「toArray」を使用できず、エラーが発生TypeError: Collection.find(...).sort(...).toArray is not a function.
していました。toArray関数は、ネイティブMongoDB NodeJSドライバーのCursorクラスに存在します(参照)。
また、sortは1つのパラメーターのみを受け入れるため、その中に関数を渡すことはできません。
これは私のために働いた( Emi lによって答えられたように):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})