我在 Node.JS 中使用 MongoDB。我有一个集合,其中包含一个日期和其他行。日期是一个 JavaScriptDate对象。
Date
如何按日期对此集合进行排序?
按日期排序不需要任何特殊要求。只需按集合中所需的日期字段进行排序。
为1.4.28 node.js 本机驱动程序更新后,您可以使用以下任何一种方式在 datefield上进行升序排序:
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。
'asc'
'ascending'
1
若要降序排序,请使用 'desc'、 'descending'或 -1代替 1。
'desc'
'descending'
-1
只是对@JohnnyHK 的回答稍作修改
collection.find().sort({datefield: -1}, function(err, cursor){...});
在许多用例中,我们希望返回最新的记录(比如最新的更新/插入)。
Sushant Gupta 的回答有点过时了,不再有用了。
下面的代码片段现在应该是这样的:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
额外的广场 [ ]支架是必要的排序参数的工作。
collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
这对我很有效:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
使用 Node.js、 Express.js 和 Monk
如果你的日期格式是这样的: 14/02/1989—— > 你可能会发现一些问题
你需要像这样使用 ISOdate:
var start_date = new Date(2012, 07, x, x, x);
—— > 结果—— > ISODate (“2012-07-14 T08:14:00.201 Z”)
现在只要像这样使用查询:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
就是这样:)
对猫鼬来说,这很简单:
collection.find().sort('-date').exec(function(err, collectionItems) { // here's your code })
collection.find().sort('date':1).exec(function(err, doc) {});
这招对我很管用
转介 https://docs.mongodb.org/getting-started/node/query/
db.getCollection('').find({}).sort({_id:-1})
这将根据插入日期按降序对集合进行排序
对于猫鼬,我不能使用‘ toArray’,并且得到了错误: TypeError: Collection.find(...).sort(...).toArray is not a function. ToArray 函数存在于来自本地 MongoDB NodeJS 驱动程序(参考文献)的 Cursor 类上。
TypeError: Collection.find(...).sort(...).toArray is not a function.
Sort 也只接受一个参数,因此不能在其中传递函数。
这对我有效(正如 埃米尔所回答的那样) :
collection.find().sort('-date').exec(function(error, result) { // Your code })