如何在MongoDB中按datesorting集合?

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

我怎样才能按datesorting这个集合?

只是对@JohnnyHK答案稍作修改

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

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

按datesorting不需要任何特殊的东西。 只需按收集的所需date字段进行sorting。

针对1.4.28 node.js本地驱动程序进行了更新,可以使用以下任一方式对datefield进行升序sorting:

 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

要降序sorting,请使用'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) {}); 

这对我工作

简称https://docs.mongodb.org/getting-started/node/query/

sorting参数起作用需要额外的Square []括号。

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

mongoose就像这样简单:

 collection.find().sort('-date').exec(function(err, collectionItems) { // here's your code }) 
 db.getCollection('').find({}).sort({_id:-1}) 

这将根据插入的date以降序对您的collections进行sorting

如果你的date格式是这样的: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) {...} 

而已 :)