如何在Mongoose聚合查询中统计欠款客户数量(不修改匹配条件)
你可以在聚合的$group阶段新增统计逻辑,用$cond结合$sum来实现需求,完全不需要修改原有的$match条件。
完整的聚合查询示例如下:
db.clients.aggregate([ // 保持原有的$match条件不变,确保匹配指定用户的所有客户 { $match: { userId: ObjectId("你的目标用户ID") } }, { $group: { _id: null, // 确保返回单个汇总对象 totalSalesValue: { $sum: "$clientSalesValue" }, // 原有的总销售额计算 totalDebts: { $sum: "$currentDebt" }, // 原有的总欠款计算 // 新增的统计currentDebt>0的客户数字段 debtClientCount: { $sum: { $cond: { if: { $gt: ["$currentDebt", 0] }, then: 1, else: 0 } } } } } ])
逻辑说明
$gt操作符判断当前客户的currentDebt是否大于0;$cond根据判断结果返回1(符合条件)或0(不符合);$sum将这些1和0累加,最终得到的就是currentDebt>0的客户总数量;- 原有的
$match条件完全保留,确保统计范围始终是指定用户的所有客户。
内容的提问来源于stack exchange,提问作者GhostOrder
相关产品推荐
相关产品推荐

