Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用MongoDB聚合对唯一ID求和?_Mysql_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

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

Mysql 如何使用MongoDB聚合对唯一ID求和?,mysql,mongodb,mongodb-query,aggregation-framework,Mysql,Mongodb,Mongodb Query,Aggregation Framework,我正在尝试使用以下数据:我有一系列“日志”,其中列出了客户id,以及所购买产品的各种信息: 每个客户可能有多个“日志”(因为每个客户可能进行了多次购买)。我可以通过使用“计数”每个客户拥有的日志数 > db.test.aggregate([{$group : {"_id" : "$customer_id", total_purchases : {$sum : 1}}}]) 哪个输出 { "_id" : 7293, "total_purchases" : 3 } { "_id" : 857

我正在尝试使用以下数据:我有一系列“日志”,其中列出了
客户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" : 7334, "total_purchases" : 7 }
{ "_id" : 1239, "total_purchases" :12 }
{ "_id" : 8342, "total_purchases" : 5 }
{ "_id" : 1324, "total_purchases" : 6 }
{ "_id" : 9823, "total_purchases" : 9 }
...
因此,客户“_id7293”总共购买了三次,客户“_id8573”总共购买了一次,以此类推

我想知道总购买量大于3的客户总数。一个人如何“合计”客户总数

目前,我知道如何使用
$match
列出总购买量大于3的客户总数,即

> db.test.aggregate([{$group : {"_id" : "$customer_id", total_purchases : {$sum : 1}}}]), {total_purchases : {"$gt" : 3}}])
哪个输出

{ "_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" : 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 }}    
 }}])

括号里有个错误。我认为正确的排序应该是这样的:
db.log.aggregate([{$group:{{u id:$customer\u id,total\u purchases:{$sum:1}}},{$match:{“total\u purchases”:{“$gt”:3},{$project:{u id:0,“total\u purchases:1}}])
,这不计算订单超过三个的客户总数。能否显示预期结果的示例文档?@user3100115 I删除了示例文档。请参见“编辑历史记录”或此问题: