在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版本的前缀或使用值1
, asc
或ascending
。
正确的答案是:
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) { ... });