我正在使用MongoDB和Node.JS.我有一个包含日期和其他行的集合。日期是JavaScript Date
对象。
如何按日期对此收藏品进行排序?
答案 0 :(得分:144)
对@JohnnyHK答案稍作修改
collection.find().sort({datefield: -1}, function(err, cursor){...});
在许多用例中,我们希望返回最新的记录(比如最新的更新/插入)。
答案 1 :(得分:33)
按日期排序不需要任何特殊内容。只需按集合中所需的日期字段排序。
针对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) {...});
'asc'
或'ascending'
也可用于代替1
。
要对降序进行排序,请使用'desc'
,'descending'
或-1
代替1
。
答案 2 :(得分:16)
Sushant Gupta的答案有点过时,不再适用。
以下代码段现在应该是这样的:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
答案 3 :(得分:15)
db.getCollection('').find({}).sort({_id:-1})
这将根据插入日期按降序对您的收藏品进行排序
答案 4 :(得分:12)
这对我有用:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
使用Node.js,Express.js和Monk
答案 5 :(得分:6)
collection.find().sort('date':1).exec(function(err, doc) {});
这对我有用
答案 6 :(得分:5)
使用猫鼬它就像:
一样简单collection.find().sort('-date').exec(function(err, collectionItems) {
// here's your code
})
答案 7 :(得分:4)
附加方格 [] 要使排序参数起作用,需要使用方括号。
collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
答案 8 :(得分:2)
如果您的日期格式如下: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) {...}
它是:)
答案 9 :(得分:0)