MongoDb - 按数组字段的最高值元素排序

vah*_*det 1 arrays sorting mongodb aggregation-framework

date我有一个包含如下文档的集合,我想根据它们在数组中包含的最高值对文档进行排序status

[{
  "_id": "1",
  "name": "Tea",
  "status": [
    {
      "state": "a",
      "date": "2019-08-22"
    },
    {
      "state": "b",
      "date": "2019-07-12"
    },
  ],
  "_id": "2",
  "name": "Coffee",
  "status": [
    {
      "state": "c",
      "date": "2019-05-01"
    },
    {
      "state": "b",
      "date": "2019-12-31"
    }
  ]
}]
Run Code Online (Sandbox Code Playgroud)

因此,在示例中,用于排序的值应类似于:

  • :最高状态日期2019-08-22 (状态:a)
  • 咖啡:最高状态日期2019-12-31 (状态:b)

有任何想法吗?

Ale*_*lex 6

db.collection.find().sort({"status.date":-1})
Run Code Online (Sandbox Code Playgroud)

来自文档

对于数组,小于比较或升序排序会比较数组的最小元素,大于比较或降序排序会比较数组的最大元素