首页 > 解决方案 > 从 JSON 中查找 MongoDB 中的平均值

问题描述

在我的 MongoDB(从 JSON 文件中导出)中,我的数据库“dab”具有如下结构:

id:"1"
datetime:"2020-05-08 5:09:56"
name:"namea"
lat:55.826738
lon:45.0423412
analysis:"[{"0":0.36965591924860347},{"5":0.10391287134268598},{"10":0.086884394..."

我正在使用该数据库通过 MongoDB-Spark 连接器进行火花分析。

我的问题是字段“分析”-我需要每个间隔(“0”、“5”、“10”、...、“1000”)的所有值的平均结果,所以我必须求和 0.36965591924860347 + 0.10391287134268598 + 0.086884394 + ...并除以间隔数(我每列有200个间隔),最后将结果乘以100。

标签: jsonmongodbapache-spark

解决方案


我的解决方案是这个:

db.collection.aggregate([
  {
    $set: {
      analysis: {
        $map: {
          input: "$analysis",
          in: { $objectToArray: "$$this" }
        }
      }
    }
  },
  {
    $set: {
      analysis: {
        $map: {
          input: "$analysis",
          in: { $first: "$$this.v" }
        }
      }
    }
  },
  { $set: { average: { $multiply: [ { $avg: "$analysis" }, 100 ] } } }
])

蒙古游乐场


推荐阅读