You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:28:01