使用MongoDB $sort两次

dm7nw8vv  于 2023-02-11  发布在  Go
关注(0)|答案(1)|浏览(123)

有没有办法在一个聚合管道中使用两次$sort操作符?我知道使用带有两个键的单数$sort可以正常工作,即先按第一个键排序,然后按第二个键排序。
我当前的项目需要存在多个$sort阶段,例如

db.collection.aggregate([
  {
    $sort: {
      "age": 1
    }
  },
  {
    $sort: {
      "score": -1
    }
  }
])

目前,第二阶段不尊重第一阶段的结果。有什么解决办法吗?
例如,是否可以在第一阶段之后为每个文档分配一个新字段“index”,将其索引存储在当前结果数组中,并在第二个$sort阶段使用该字段?

xiozqbni

xiozqbni1#

您可以在“$sort”中使用多个值。

db.collection.aggregate([
  {
    "$sort": {
      "age": 1,
      "score": -1
    }
  }
])

我已经定义了蒙哥Playground的链接,你可以参考一下
https://mongoplayground.net/p/ZaRX_XNSXhu

相关问题