mongodb 如何在nosqlbooster上连接集合,以便我可以在它上运行$avg查询?

pftdvrlh  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(172)

我的数据库中有两个集合,它们的文档中的字段名称相同。我需要联接这些集合,然后对公共字段名称的值求和,最后得出平均值作为我的输出。
这是第一个集合中的文档示例

{
    "_id" : ObjectId("63074885ff3acbe0d63d7686"),
    
"year" : "2020",
    
"energy_products" : "Other Energy Products",
    
"sub_products" : "Other Energy Products",
    
"value_ktoe" : "70.4"
},

这是第二个集合中的文档示例

{
    "_id" : ObjectId("63074882ff3acbe0d63c391a"),

"year" : "2020",

"energy_products" : "Petroleum Products",

"sub_products" : "Other Petroleum Products",

"value_ktoe" : "10633.7"
},

所以我需要加入这些集合,并对能量产品和子产品部分中的所有值求和,然后求出平均值。
输出需要如下所示
第一次

jfewjypa

jfewjypa1#

执行一个$unionWith来“合并”这两个集合。执行一个简单的$group来得到你需要的$avg

db.coll1.aggregate([
  {
    "$group": {
      "_id": {
        "energy_products": "$energy_products"
      },
      "avg": {
        "$avg": {
          "$toDouble": "$value_ktoe"
        }
      }
    }
  },
  {
    "$unionWith": {
      "coll": "coll2",
      "pipeline": [
        {
          "$group": {
            "_id": {
              "sub_products": "$sub_products"
            },
            "avg": {
              "$avg": {
                "$toDouble": "$value_ktoe"
              }
            }
          }
        }
      ]
    }
  }
])

Mongo Playground

相关问题