mongodb - 平均值 mongodb
问题描述
我正在尝试从我的数据中获取值字段的平均值。我有嵌套文档。有一些价值观。我想从此文档中获取字段“值”的平均值。并希望在 c# 应用程序中使用此值
{
"_id" : ObjectId("5c49f398fc0078178c76705b"), // my json data
"Time_Created" : ISODate("2019-01-24T17:19:20.205Z"), // date
"Test_ID" : "1",
"data" : [
{
"Device_id" : "1",
"Total_wires" : "5",
"Cables" : [
{
"TAG" : "4001",
"Value" : 24.3
},
{
"TAG" : "4002",
"Value" : 21.3
},
{
"TAG" : "4003",
"Value" : 21.3
},
{
"TAG" : "4004",
"Value" : 21.3
},
{
"TAG" : "4005",
"Value" : 100.3
}
]
}
]
}
db.collection_name.aggregate( [ {$unwind: "$data"}, { $group : { _id : "$data.Cables.Value", avgValue: { $avg : "$data.Cables.Value"} } } ] );
我得到这个结果:
{ "_id" : [ 24.3, 21.3, 21.3, 21.3, 100.3 ], "avgValue" : null }
但这就是我所期待的
{ "_id" : [ 24.3, 21.3, 21.3, 21.3, 100.3 ], "avgValue" : 37.7 }
37.7
是所有值24.3
、21.3
、21.3
、21.3
和的平均值100.3
解决方案
试试下面的管道。
[
{
'$project': {
'values': '$data.Cables.Value',
}
}, {
'$unwind': '$values'
}, {
'$addFields': { 'avgValue':
{ '$avg': '$values'}
}
}
])
推荐阅读
- windows-subsystem-for-linux - 是否可以在 WSL 中使用 nmcli 并创建 wifi 热点?
- python - Pandas:遍历 DataFrame 列并删除具有少于 i 个观察值的变量的行
- aws-lambda - 如何监控 cloudwatch 中的 lambda 调用指标?
- neo4j - 基于嵌套列表创建关系
- angular - 如何为 Observable 赋值
? - c++ - 使用循环在 C++ 中移动 Sprite(SFML)
- javascript - 从页面上的列表中查找单词
- powershell - 如何从 Powershell 获取当前和存档邮箱大小?
- node.js - 是否可以在不知道名称的情况下获取电子表格中所有页面的名称?
- azure - 在 Azure 应用服务中为我的测试/暂存槽创建测试/暂存数据库