如何按日期对数据进行排序(json)

时间:2020-02-20 07:39:26

标签: node.js json mongodb

我想按日期对json数据进行排序,实际数据为1〜31 示例数据:

{
  Detail: { '60': 100, '68': 20 },
  Time: 2020-01-02T07:08:41.059Z,
  No: 'aaa'
},
{
  Detail: { '60': 300, '68': 20 },
  Time: 2020-01-02T09:10:21.059Z,
  No: 'bbb'
},
{
  Detail: { '60': 10 },
  Time: 2020-01-11T07:08:45.521Z,
  No: 'ccc'
}

我如何按日期排序:

{
  "2":{
     "aaa": { '60': 100, '68': 20 }
     "bbb": { '60': 300, '68': 20 }
   }
  "11":{
     "ccc": { '60': 100 },
   }
}

谢谢

1 个答案:

答案 0 :(得分:0)

以下聚合可以做到这一点。假设Time字段的类型为Date

db.test.aggregate( [
  { 
      $group: { 
          _id: { day: { $dayOfMonth: "$Time" } }, 
          data:{ $push: { k: "$No", v: "$Detail" } } 
      } 
  },
  { 
      $sort: { "_id.day": 1 } 
  },
  { 
      $addFields: { 
          data: { $arrayToObject: "$data" }, 
          day: "$_id.day" 
      } 
  },
  { 
      $group: {
          _id: null, 
          data: { $push: { k: { $toString: "$_id.day" }, v: "$data" } } 
      } 
  },
  { 
      $project: {
           _id: 0, 
           data: { $arrayToObject: "$data" } 
      } 
  },
  { 
      $replaceRoot: { newRoot: "$data" } 
  }
] ).pretty()