繁体   English   中英

如何使用MongoDB聚合对唯一ID求和?

[英]How to do sum unique ids with MongoDB aggregation?

我正在尝试使用以下数据:我有一系列“日志”,其中列出了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”总共进行了3次购买,客户“ _id 8573”进行了1次购买,依此类推。

我想知道购买总数超过三的客户总数。 一个“总和”客户总数如何?

目前,我知道如何使用$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等效于什么? 感谢您的帮助!

您可以将$ match和$ project一起使用。

类似于:

db.log.aggregate([{      
    $group: {
         _id: "$customer_id",
         total_purchases: { 
              $sum: 1 
         }
     }, 
     { $match: { "total_purchases": { $gt: 3 }},
     { $project: { "_id": 0, "total_purchases": 1 }}    
 }}])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM