我知道如何使用 MongoDB 对文档进行排序。但我想对多个日期属性的文档进行排序,例如按创建日期和更新日期排序,哪个日期是最新的。例如,文档是新创建的或最近更新的,它应该排在第一位。
这是我的文档示例。
{
"_id" : ObjectId("5720b6f0bb700f8839fc6972"),
"name" : "Tov Kosher Kitchen",
"restaurant_id" : "40356068",
"createdAt" : ISODate("2016-05-05T07:02:13.137Z"),
"updatedAt" : ISODate("2016-05-05T07:02:58.033Z")
}
更新:createdAt 和updatedAt 是示例属性。两者都可以彼此独立地更改。
最佳答案
您可以通过 $project
阶段使用 aggregate
来完成此操作,该阶段添加一个字段(两个时间戳中较大的一个),然后对其进行排序:
db.test.aggregate([
{$project: {
// Include the original doc
doc: '$$ROOT',
// Add a 'latest' field that contains the greater of createdAt and updateAt
latest: {$cond: {
if: {$gt: ['$createdAt', '$updatedAt']},
then: '$createdAt',
else: '$updatedAt'
}}
}},
{$sort: {latest: -1}}
])
关于Mongodb $按创建和更新日期排序。 (哪一个是最新的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319461/