方法一:使用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阶段计算分组的数量。