MongoDB:对多文档嵌套数组各位置按时间求平均值
问题:按时间
t计算参与者e数组对应位置的平均值 数据结构说明
"a"字段:存储解剖学指标,示例中为foo、bar(如身高、体重等)"b"字段:存储每秒测试表现数据,每个元素包含:"t":时间(秒)"e":对应时间点的测试结果数组(如心律、血压、体温等)
示例数据
[ { "a": { "foo":1, "bar": 100 }, "b": [ { "t":1, "e":[3,4,5] }, { "t":2, "e":[4,4,4] }, { "t":3, "e":[7,4,7] } ] }, { "a": { "foo":2, "bar": 111 }, "b": [ { "t":1, "e":[9,4,0] }, { "t":2, "e":[1,4,2] }, { "t":3, "e":[3,4,5] } ] }, { "a": { "foo":4, "bar": 200 }, "b": [ { "t":1, "e":[1,4,2] }, { "t":2, "e":[3,1,3] }, { "t":3, "e":[2,4,1] } ] } ]
已实现的聚合逻辑(a字段指标平均值)
已成功通过以下聚合语句计算a字段中bar的平均值:
db.collection.aggregate([ { $group: { _id: null, barAvg: { $avg: "$a.bar" } } } ])
待实现需求与期望结果
需要实现按时间t分组,对所有参与者在同一t下的e数组对应位置元素分别求平均值。
期望得到的结果如下:
"average": [ { "t":1, "e":[4.33, 3.00, 2.33] }, { "t":2, "e":[2.66, 3.00, 3.00] }, { "t":3, "e":[4.33, 3.00, 5.00] } ]
说明:4.33是所有参与者在t=1时,e数组第1个元素(e[0])的平均值
内容的提问来源于stack exchange,提问作者VIP_madison
相关产品推荐
相关产品推荐

