mongodb-仅$ sort个子文档

时间:2019-08-17 14:16:48

标签: mongodb mongodb-query

当我在mongodb集合中进行全部查找时,我希望将maintenanceList按旧的maintenanceDate排序到最新。

maintenanceDate的种类不应影响查找所有查询的父母顺序

{
   "_id":"507f191e810c19729de860ea",
   "color":"black",
   "brand":"brandy",
   "prixVenteUnitaire":200.5,
   "maintenanceList":[
      {
         "cost":100.40,
         "maintenanceDate":"2017-02-07T00:00:00.000+0000"
      },
      {
         "cost":4000.40,
         "maintenanceDate":"2019-08-07T00:00:00.000+0000"
      },
      {
         "cost":300.80,
         "maintenanceDate":"2018-08-07T00:00:00.000+0000"
      }
   ]
}

有人猜想怎么做? 谢谢

1 个答案:

答案 0 :(得分:1)

无论字段在上一个流水线阶段中处于什么顺序,因为$ project和$ group之类的操作都有效地“复制”了相同位置。因此,它不会改变汇总结果中字段的顺序。

通过聚合进行的maintenanceDate排序不会影响“查找全部”查询中的父顺序。 因此,只需执行此操作即可。

假设我的收藏名称为example

 db.example.aggregate([
  {
    "$unwind": "$maintenanceList"
  },
  {
    "$sort": {
      "_id": 1,
      "maintenanceList.maintenanceDate": 1
    }
  },
  {
    "$group": {
      "_id": "$_id",
      "color": {
        $first: "$color"
      },
      "brand": {
        $first: "$brand"
      },
      "prixVenteUnitaire": {
        $first: "$prixVenteUnitaire"
      },
      "maintenanceList": {
        "$push": "$maintenanceList"
      }
    }
  }
])

输出: enter image description here