MongoDB多字段求和及统计符合条件文档数的技术咨询
MongoDB聚合统计:求和tot、duration并统计有效文档数
针对你的需求,直接用MongoDB的聚合框架就能实现,具体步骤如下:
聚合查询代码
db.people.aggregate([ // 筛选同时包含tot和duration字段的文档 { $match: { tot: { $exists: true }, duration: { $exists: true } } }, // 对筛选后的文档进行聚合统计 { $group: { _id: null, // 将所有符合条件的文档归为一组 num: { $sum: 1 }, // 统计有效文档数量 tot: { $sum: "$tot" }, // 求和tot字段 duration: { $sum: "$duration" } // 求和duration字段 } }, // 移除_id字段,让结果更符合预期格式 { $project: { _id: 0 } } ])
代码说明
- $match阶段:通过
$exists操作符过滤出同时存在tot和duration字段的文档,排除无目标字段的无效文档。 - $group阶段:指定
_id: null把所有筛选后的文档合并为一组,用$sum分别完成计数和求和操作。 - $project阶段:移除默认生成的
_id字段,让输出结果完全匹配预期格式。
执行结果
运行上述命令后,会得到你想要的结果:
{ "num" : 3, "tot" : 50, "duration" : 600 }
内容的提问来源于stack exchange,提问作者pipino
相关产品推荐
相关产品推荐

