MongoDB 统计当月付款用户数量的 2 种方法

128 阅读1分钟
方法一:使用distinct()函数结合聚合框架(aggregation framework):

示例:

db.orders.distinct("user_id", {status:1,"paid_at": {$gte:"2024-03-01"}}).length

这将返回一个数字,表示满足条件(当月付款)的用户数量。

方法二:使用聚合管道:

示例:

db.orders.aggregate([
    { $match: {status:1,"paid_at": {$gte:"2024-03-01"}} },
    { $group: { _id: "$user_id" } },
    { $count: "userCount" }
])

首先用$match阶段筛选出符合条件(当月付款)的文档,然后通过$group阶段根据字段user_id进行分组,最后用$count阶段计算分组的数量。