MongoDB如何统计所有文档中数组orders的总数量?
解决MongoDB统计所有orders总数量的问题
你只需要在现有聚合管道基础上添加$group阶段,对所有用户的订单数求和即可,这里提供两种实现方式:
方式一:基于现有查询扩展
直接在你已有的$project阶段后添加$group,把所有文档聚合为同一组并计算总和:
[ { $match: { orders: { $exists: true }, }, }, { $project: { ordersCount: { $size: '$orders', }, }, }, { $group: { _id: null, // 将所有文档归为同一组 totalOrders: { $sum: '$ordersCount' } // 累加每个用户的订单数 } } ]
方式二:更高效的精简写法
可以省略$project阶段,直接在$group里完成订单数计算与求和,减少管道阶段提升性能:
[ { $match: { orders: { $exists: true }, }, }, { $group: { _id: null, totalOrders: { $sum: { $size: '$orders' } } // 直接计算每个orders数组长度并累加 } } ]
两种方式最终都会返回一个包含totalOrders字段的文档,该字段值即为所有用户的订单总数量。
内容的提问来源于stack exchange,提问作者margherita pizza
相关产品推荐
相关产品推荐

