json - 从 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。
解决方案
我的解决方案是这个:
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 ] } } }
])
推荐阅读
- elasticsearch - elasticsearch 重新索引文档减少可用空间
- javascript - 从异步函数中获取常量值
- php - 如何使用 php 中的会话变量将我的数据库添加到 html 表中
- unit-testing - 如何对不调用 RSpec 中另一个对象方法的方法进行单元测试
- python - Docker 在 Dockerfile 中创建卷并在其上编译应用程序
- jetbrains-ide - 如何在 Jetbrain 的 Exposed DSL 方法中加载相关实体
- java - Java Hibernate Spring - 具有默认实现的服务接口
- android - 我们如何在本机反应中读取设备状态?(例如:通话中的电话,睡眠模式等...)
- javascript - 在表格中隐藏具有特定字符数的行
- angular - 由于模板插值不起作用,如何在我的组件中呈现购物车数组