我们说文档中有两个字段updatedAt
和createdAt
。但是,如果文档尚未更新,则该文档不一定必须包含updatedAt
字段。
我想按这两个字段排序,基本上将这两个字段合并到另一个字段someField
中并执行
db.stuff.find({}, {sort: {someField: -1}});
我想说的是当前的构图排序
db.stuff.find({}, {sort: {createdAt: -1, updatedAt: -1}});
首先按createdAt排序然后再更新。
答案 0 :(得分:3)
您可以使用聚合管道创建两个字段与$project
和$ifNull
的条件合并。
db.stuff.aggregate([
{ $project:
{ createdOrUpdatedAt: { $ifNull: ["$updatedAt", "$createdAt"] },
fieldA: 1,
fieldB: 1,
fieldEtc: 1 }
},
{ $sort: { createdOrUpdatedAt: -1 } }
]);
答案 1 :(得分:0)
您可以使用聚合方法进行排序,项目等。如果您只是寻找以下内容:
然后以下内容将起作用:
db.stuff.aggregate(
[
{ $sort : { createdAt : -1, updatedAt: -1 } }
]
)
我不确定你为什么需要将这两个字段合并到另一个字段