基于数组中嵌入的日期对MongoDB中的数据进行排序

时间:2016-09-06 14:15:40

标签: mongodb mongodb-query

我的mongodb文件为:

{
  "_id":"fnbgfbmkgmbkgmbklhn",
  "data":[
      {
         "item":"ITEM1",
         "date":ISODate("2016-09-06T13:38:44.714Z")
      },
      {
         "item":"ITEM2",
         "date":ISODate("2016-09-06T13:50:44.714Z")
      },
      {
         "item":"ITEM3",
         "date":ISODate("2016-09-06T13:45:44.714Z")
      }
  ]
}

本文档是 db.collectionName.aggregate(....)的结果。应用聚合后,如何根据" date"进行排序。

1 个答案:

答案 0 :(得分:3)

您可以展开data数组,按data.date对结果进行排序,然后再按_id对其进行分组:

[
    {$unwind: {path: "$data"}},
    {$sort: {"data.date": -1}},
    {$group: {_id: "$_id", data: {$push: {item: "$data.item", date: "$data.date"}}}}
]

将这些阶段合并到现有的聚合管道中而不是仅仅附加它们可能更有效。