在mongodb中按多个字段一起排序

Maa*_*aaz 2 sorting mongodb

假设文档中有两个字段updatedAtcreatedAt。但是,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 排序。

NoO*_*let 5

您可以使用聚合管道创建具有两个字段的条件合并$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)