在mongoose,我怎么按datesorting? (的node.js)

比方说,我在Mongoose中运行这个查询:

Room.find({}, function(err,docs){ }).sort({date:-1}); 

这不行!

在Mongoose中进行sorting已经在这些版本中发展,这些答案中的一些不再有效。 从Mongoose的4.1.x版本开始, date字段中的降序sorting可以通过以下任何方式完成:

 Room.find({}).sort('-date').exec(function(err, docs) { ... }); Room.find({}).sort({date: -1}).exec(function(err, docs) { ... }); Room.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... }); Room.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... }); Room.find({}).sort([['date', -1]]).exec(function(err, docs) { ... }); Room.find({}, null, {sort: '-date'}, function(err, docs) { ... }); Room.find({}, null, {sort: {date: -1}}, function(err, docs) { ... }); 

对于升序sorting,省略string版本的前缀或使用值1ascascending

正确的答案是:

 Blah.find({}).sort({date: -1}).execFind(function(err,docs){ }); 

今天使用Mongoose 3.5(.2)处理这个问题,没有任何答案帮助我解决了这个问题。 下面的代码片段可以做到这一点

 Post.find().sort('-posted').find(function (err, posts) { // user posts array }); 

你可以发送任何标准的参数,你需要find() (例如where子句和返回字段),但没有callback。 没有callback,它会返回一个查询对象,你链接sort() 。 你需要再次调用find() (有或没有更多的参数 – 不需要任何效率的原因),这将允许你在你的callback中得到结果集。

我这样做:

 Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) { ... }) 

这将首先显示最近的事情。

 Post.find().sort({date:-1}, function(err, posts){ }); 

也应该工作

看看这是否有帮助> 如何sorting在mongoose?

另请阅读本文> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order

简而言之:

 const query = {} const projection = {} const options = { sort: { id: 1 }, limit: 2, skip: 10 } Room.find(query, projection, options).exec(function(err, docs) { ... });