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

MongoDB中按ID匹配并计算data数组内val字段的平均值

按ID计算嵌套数组val字段的平均值

需求:匹配集合collection1中指定_id的文档,计算其data数组内所有val字段的平均值。

示例集合数据

[{
    "_id": 1,
    "data": [
        {"val": 2},
        {"val": 4},
        {"val": 6}
    ]
},
{
    "_id": 2,
    "data": [
        {"val": 99}
    ]
}]

实现方法(MongoDB聚合查询)

直接通过数据库聚合管道完成计算,无需在应用层处理数据:

db.collection1.aggregate([
    // 匹配指定_id的目标文档
    { $match: { _id: 1 } },
    // 将data数组拆分为单独文档
    { $unwind: "$data" },
    // 计算所有val字段的平均值
    { $group: {
        _id: "$_id",
        avgVal: { $avg: "$data.val" }
    }}
])

查询结果

当指定_id:1时,返回结果为:

[{ "_id": 1, "avgVal": 4 }]

如果仅需返回平均值数值,可在聚合末尾添加$project阶段简化输出:

db.collection1.aggregate([
    { $match: { _id: 1 } },
    { $unwind: "$data" },
    { $group: {
        _id: "$_id",
        avgVal: { $avg: "$data.val" }
    }},
    { $project: { _id: 0, avgVal: 1 } }
])

返回结果:

[{ "avgVal": 4 }]

内容的提问来源于stack exchange,提问作者parth hirpara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:36