163

Node.JSでMongoDBを使用しています。日付と他の行を含むコレクションがあります。日付はJavaScriptDateオブジェクトです。

このコレクションを日付で並べ替えるにはどうすればよいですか?

4

10 に答える 10

243

@JohnnyHKの回答にわずかな変更を加えます

collection.find().sort({datefield: -1}, function(err, cursor){...});

多くのユースケースでは、最新のレコードを返す必要があります(最新の更新/挿入など)。

于 2012-12-12T21:17:31.913 に答える
65
db.getCollection('').find({}).sort({_id:-1}) 

これにより、挿入日に基づいてコレクションが降順で並べ替えられます

于 2017-06-29T01:59:19.963 に答える
45

日付で並べ替えるのに特別なことは必要ありません。コレクションの目的の日付フィールドで並べ替えるだけです。

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'します。-11

于 2012-12-12T21:11:16.080 に答える
16

Sushant Guptaの答えは少し時代遅れで、もう機能しません。

次のスニペットは次のようになります。

collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});

于 2014-07-08T09:27:01.577 に答える
12

これは私のために働いた:

collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });

Node.js、Express.js、Monkを使用する

于 2015-01-14T08:00:36.193 に答える
7
collection.find().sort('date':1).exec(function(err, doc) {});

これは私のために働いた

https://docs.mongodb.org/getting-started/node/query/を参照

于 2016-02-13T08:57:54.217 に答える
6

マングースの場合、それは次のように簡単です。

collection.find().sort('-date').exec(function(err, collectionItems) {
  // here's your code
})
于 2015-10-19T20:52:02.410 に答える
4

パラメータを並べ替えるには、追加の角かっこ[]かっこが必要です。

collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
于 2014-08-13T17:06:01.030 に答える
3

日付形式が次のような場合: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) {...}

それでおしまい :)

于 2015-04-27T14:19:46.480 に答える
2

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
})
于 2018-06-02T10:39:16.160 に答える