首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将mongodb对象数据聚合数组分组为同一日期的数字和

如何将mongodb对象数据聚合数组分组为同一日期的数字和
EN

Stack Overflow用户
提问于 2021-09-03 13:21:05
回答 1查看 202关注 0票数 1

我试图创建图表,但我不能将数据组合成“预期结果”

我可以用什么来返回“预期的结果”。

我试着在$group和$reduce中使用$group和$reduce,但效果不太好。

我希望有人能帮我解决这个问题。

当前的结果是

代码语言:javascript
复制
[
   {
      "_id":"5fd4c3586e83b334d97c5218",
      "consumption":5,
      "charts":[
         {
            "date":"2020-10",
            "consumption":1
         },
         {
            "date":"2020-10",
            "consumption":1
         },
         {
            "date":"2020-11",
            "consumption":1
         },
         {
            "date":"2020-11",
            "consumption":1
         }
      ]
   }
]

预期结果为

代码语言:javascript
复制
[
   {
      "_id":"5fd4c3586e83b334d97c5218",
      "consumption":5,
      "charts":[
         {
            "date":"2020-10",
            "consumption":2
         },
         {
            "date":"2020-11",
            "consumption":2
         },
   }
]
EN

回答 1

Stack Overflow用户

发布于 2021-09-03 16:54:07

您需要使用聚合。

代码语言:javascript
复制
db.collection.aggregate([
  { $unwind: "$charts" },
  {
    $group: {
      _id: { _id: "$_id", month: "$charts.date.month", year: "$charts.date.year" },
      consumption: { $first: "$consumption" },
      total: { $sum: "$charts.consumption" },
      date: { $first: "$charts.date" }
    }
  },
  {
    $group: {
      _id: "$_id._id",
      consumption: { $first: "$consumption" },
      charts: {
        $push: {
          date: "$date",
          consumption: "$total"
        }
      }
    }
  }
])

Working 蒙戈游乐场

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69045631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档