假设文档中有两个字段updatedAt和createdAt。但是,updatedAt如果文档尚未更新,则文档不一定必须具有该字段。
我想通过这些字段进行排序,本质上是两个字段合并到像另一个领域someField,做
db.stuff.find({}, { sort: {`someField: -1 } });
Run Code Online (Sandbox Code Playgroud)
我想说的是当前的组合排序
db.stuff.find({}, {sort: { createdAt: -1, updatedAt: -1 } });
Run Code Online (Sandbox Code Playgroud)
将首先按createdAt 排序,然后按updatedAt 排序。
您可以使用聚合管道创建具有两个字段的条件合并$project和$ifNull。
db.stuff.aggregate([
{ $project:
{ createdOrUpdatedAt: { $ifNull: ["$updatedAt", "$createdAt"] },
fieldA: 1,
fieldB: 1,
fieldEtc: 1 }
},
{ $sort: { createdOrUpdatedAt: -1 } }
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |