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

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

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

flow asked 2019-08-09T23:41:47Z
10个解决方案
142 votes

只是稍微修改@JohnnyHK答案

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

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

Sushant Gupta answered 2019-08-09T23:42:05Z
33 votes

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

更新了1.4.28 node.js本机驱动程序,您可以使用以下任一方法对'desc'进行升序排序:

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) {...});

也可用'desc''descending'代替-1

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

JohnnyHK answered 2019-08-09T23:42:52Z
16 votes

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

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

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

krikara answered 2019-08-09T23:43:31Z
13 votes
db.getCollection('').find({}).sort({_id:-1}) 

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

Rich Rajah answered 2019-08-09T23:43:56Z
12 votes

这对我有用:

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

使用Node.js,Express.js和Monk

GoldfishGrenade answered 2019-08-09T23:44:23Z
6 votes
collection.find().sort('date':1).exec(function(err, doc) {});

这对我有用

提到[https://docs.mongodb.org/getting-started/node/query/]

Mendon Ashwini answered 2019-08-09T23:44:50Z
5 votes

随着猫鼬,它很简单:

collection.find().sort('-date').exec(function(err, collectionItems) {
  // here's your code
})
emil.c answered 2019-08-09T23:45:16Z
4 votes

需要额外的Square [] Bracket才能使分类参数正常工作。

collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
Deenbandhu Prasad answered 2019-08-09T23:45:41Z
2 votes

如果你的日期格式是这样的:14/02/1989 ----> 你可能会发现一些问题

你需要像这样使用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) {...}

那是它:)

Amine_Dev answered 2019-08-09T23:46:34Z
0 votes

随着猫鼬,我无法使用' toArray',并得到错误:TypeError: Collection.find(...).sort(...).toArray is not a function.toArray函数存在于Native MongoDB NodeJS驱动程序(引用)的Cursor类中。

sort也只接受一个参数,因此您无法在其中传递函数。

这对我有用(正如Emil的回答):

collection.find().sort('-date').exec(function(error, result) {
  // Your code
})
Pransh Tiwari answered 2019-08-09T23:47:14Z
translate from https://stackoverflow.com:/questions/13847766/how-to-sort-a-collection-by-date-in-mongodb