如何在 MongoDB 中按日期对集合进行排序?

我在 Node.JS 中使用 MongoDB。我有一个集合,其中包含一个日期和其他行。日期是一个 JavaScriptDate对象。

如何按日期对此集合进行排序?

323472 次浏览

按日期排序不需要任何特殊要求。只需按集合中所需的日期字段进行排序。

为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

只是对@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 类上。

Sort 也只接受一个参数,因此不能在其中传递函数。

这对我有效(正如 埃米尔所回答的那样) :

collection.find().sort('-date').exec(function(error, result) {
// Your code
})