【问题标题】:How do I sort data by date (json)如何按日期对数据进行排序(json)
【发布时间】:2020-06-04 11:40:57
【问题描述】:

我想按日期对json数据进行排序,实际数据hava 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 },
   }
}

谢谢

【问题讨论】:

    标签: node.js json mongodb


    【解决方案1】:

    以下聚合可以做到这一点。假设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()
    

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2019-01-17
      • 2023-03-28
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多