我正在尝试使用以下数据:我有一系列"日志"列出customer_id
以及有关所购产品的各种信息:
每个客户可能有几个"日志" (因为每个客户可能已经多次购买)。我可以"数"使用
计算每个客户的日志数量> db.test.aggregate([{$group : {"_id" : "$customer_id", total_purchases : {$sum : 1}}}])
输出
{ "_id" : 7293, "total_purchases" : 3 }
{ "_id" : 8573, "total_purchases" : 1 }
{ "_id" : 2734, "total_purchases" : 2 }
{ "_id" : 7334, "total_purchases" : 7 }
{ "_id" : 1239, "total_purchases" :12 }
{ "_id" : 8342, "total_purchases" : 1 }
{ "_id" : 9834, "total_purchases" : 1 }
{ "_id" : 0012, "total_purchases" : 1 }
{ "_id" : 7234, "total_purchases" : 3 }
{ "_id" : 8342, "total_purchases" : 5 }
...
所以,客户" _id 7293"共进行了三次购买,客户" _id 8573"共进行了一次购买等。
我想知道购买总数超过三的客户总数。一个"总和"客户总数?
目前,我知道如何使用$match
列出总购买量超过三的客户总数,即
> db.test.aggregate([{$group : {"_id" : "$customer_id", total_purchases : {$sum : 1}}}]), {total_purchases : {"$gt" : 3}}])
输出
{ "_id" : 7334, "total_purchases" : 7 }
{ "_id" : 1239, "total_purchases" :12 }
{ "_id" : 8342, "total_purchases" : 5 }
{ "_id" : 1324, "total_purchases" : 6 }
{ "_id" : 9823, "total_purchases" : 9 }
...
如何只输出一个数字,即购买量大于3的客户总数? SQL的等价物是什么? 谢谢你的帮助!
答案 0 :(得分:0)
您可以将$ match与$ project一起使用。
类似于:
db.log.aggregate([{
$group: {
_id: "$customer_id",
total_purchases: {
$sum: 1
}
},
{ $match: { "total_purchases": { $gt: 3 }},
{ $project: { "_id": 0, "total_purchases": 1 }}
}}])