【问题标题】:How to agregate mongodb rows to columns如何将mongodb行聚合到列
【发布时间】:2020-04-29 06:03:58
【问题描述】:

有没有办法在 Mongodb 中将行聚合到列中 这是架构

[{
"_id" : "2020-04-17",
"wares" : [{"ware" : "NYC","total" : 5},{"ware" : "SFO","total" : 10}]
},
{
"_id" : "2020-04-18",
"wares" : [{"ware" : "NYC","total" : 6},{"ware" : "SFO","total" : 12},{"ware" : "CHI","total" : 13}]
}]

最终结果应该是这样的

[
 {
   date: '2020-04-17', NYC: 5, SFO: 10
 },
 {
   date: '2020-04-18', NYC: 6, SFO: 12, CHI:13
 }

【问题讨论】:

  • 每个ware 值是否只会在wares 数组中出现一次?

标签: arrays mongodb mongodb-query aggregation-framework pivot


【解决方案1】:

你可以使用下面的聚合

db.collection.aggregate([
  { "$replaceRoot": {
    "newRoot": {
      "$mergeObjects": [
        { "$arrayToObject": {
          "$map": {
            "input": "$wares",
            "in": {
              "k": "$$this.ware",
              "v": "$$this.total"
            }
          }
        }},
        { "_id": "$_id" }
      ]
    }
  }}
])

MongoPlayground

【讨论】:

  • 优秀!!谢谢阿什!!
猜你喜欢
  • 1970-01-01
  • 2021-11-06
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
相关资源
最近更新 更多