MongoDB按条件排序

安库杜比

大家好,我遇到了一种情况,我需要对符合某些条件的数据进行排序,然后按优先级对它们进行排序,即首先我想按优先级降序对数据进行排序,然后在优先级为 1 时对它们进行排序(高)通过 createdAt 字段对文档进行排序,或者通过它的日期字段对文档进行排序。

我目前自己创建了一个聚合,但它没有返回正确的数据。

model.aggregate([
  {
    $match: {
      jobId,
      deprecated: false,
    },
  },
  {
    $project: {
      document: "$$ROOT",
      sort: {
        $cond: {
          if: {
            $eq: ["$priority", 1],
          },
          then: "$createdAt",
          else: "$date",
        },
      },
    },
  },
  {
    $sort: {
      priority: -1,
      sort: 1,
    },
  },
]);
安库杜比

嘿伙计们感谢您的时间我解决了我使用的问题

由于我正在使用document: "$$ROOT"我只是在 $project 中添加一个字段,因此它创建文档字段并将所有数据存储在其中,这就是优先级字段不可用的原因,

我只是priority:1在 $project 中添加它,它包含该字段。下面我发布了工作代码,如果您也想要类似的东西,它可能会对您有所帮助。

model.aggregate([
  {
    $match: {
      jobId: '5c501eed65816d61c6a0af77',
      deprecated: false,
    },
  },
  {
    $project: {
      document: "$$ROOT",
      priority: 1,  
      sort: {
        $cond: {
          if: {
            $eq: ["$priority", 1],
          },
          then: "$createdAt",
          else: "$date",
        },
      },
    },
  },
  {
    $sort: {
      priority: -1,  
      sort: 1,
    },
  },
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章