如何在MongoDB中按日期对集合进行排序?

flo*_*low 113 mongodb node.js

我正在使用MongoDB和Node.JS. 我有一个包含日期和其他行的集合.日期是JavaScript Date对象.

如何按日期对此集合进行排序?

Sus*_*pta 166

只是稍微修改@JohnnyHK答案

collection.find().sort({datefield: -1}, function(err, cursor){...});
Run Code Online (Sandbox Code Playgroud)

在许多用例中,我们希望返回最新的记录(例如最新的更新/插入).

  • 它说sort()只需要1个参数 (4认同)

Joh*_*yHK 36

按日期排序不需要任何特殊的东西.只需按集合的所需日期字段排序即可.

针对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) {...});
Run Code Online (Sandbox Code Playgroud)

'asc'或者'ascending'也可以用来代替1.

要降序,使用'desc','descending'-1代替1.


Ric*_*jah 20

db.getCollection('').find({}).sort({_id:-1}) 
Run Code Online (Sandbox Code Playgroud)

这将根据插入日期按降序对您的集合进行排序


kri*_*ara 16

Sushant Gupta的答案有点过时,不再适用了.

以下代码段现在应该是这样的:

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


Gol*_*ade 12

这对我有用:

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

使用Node.js,Express.js和Monk


Men*_*ini 6

collection.find().sort('date':1).exec(function(err, doc) {});
Run Code Online (Sandbox Code Playgroud)

这对我有用

引用https://docs.mongodb.org/getting-started/node/query/


emi*_*l.c 5

使用猫鼬它就像下面这样简单:

collection.find().sort('-date').exec(function(err, collectionItems) {
  // here's your code
})
Run Code Online (Sandbox Code Playgroud)