Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Mongodb Mongo聚合与独特_Mongodb_Distinct_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb Mongo聚合与独特

Mongodb Mongo聚合与独特,mongodb,distinct,mongodb-query,aggregation-framework,Mongodb,Distinct,Mongodb Query,Aggregation Framework,假设我的集合有用户名、存储库名称和唯一的提交id {"name" : "a","commit_id": "078d40cc537","repo": "r1"}, {"name" : "b","commit_id": "078d40cc538","repo": "r2"}, {"name" : "c","commit_id": "078d40cc539","repo": "r3"}, {"name" : "a","commit_id": "078d40cc540","repo": "r1"}, {

假设我的集合有用户名、存储库名称和唯一的提交id

{"name" : "a","commit_id": "078d40cc537","repo": "r1"},
{"name" : "b","commit_id": "078d40cc538","repo": "r2"},
{"name" : "c","commit_id": "078d40cc539","repo": "r3"},
{"name" : "a","commit_id": "078d40cc540","repo": "r1"},
{"name" : "c","commit_id": "078d40cc541","repo": "r1"},
{"name" : "c","commit_id": "078d40cc542","repo": "r3"},
{"name" : "d","commit_id": "078d40cc543","repo": "r1"}
我希望生成一个按存储库分组的输出,其中包含不同的用户和总提交

repo:"r1" , distinct_users:"3", total_commits:"4"
repo:"r3" , distinct_users:"1", total_commits:"2"
repo:"r2" , distinct_users:"1", total_commits:"1"

任何帮助都将不胜感激。

两个分组管道阶段。但您可能缺少的不仅仅是添加1:

db.collection.aggregate[ {$group:{ _id:{repo:$repo,name:$name}, 提交:{$sum:1} }}, {$group:{ _id:$\u id.repo, 不同的用户:{$sum:1}, 提交总数:{$sum:$commits} }} ]
我不得不将第二个$group修改为group by _id:$\u id.repo以生成所需的输出。@harishvc不知道您在说什么。上述结果会导致您的输出,但_id下的回购除外。但这样做的$project是不必要的额外工作。因此省略。使用您的逻辑,我得到以下输出[{u'total\u commissions':7,u'id':None,u'distinct\u users':5}]。当第二个$group被修改为{$group:{{$id:$\U id.repo,不同的用户:{$sum:1},总提交:{$sum:$commits}}时,输出将按存储库分组,其中包含不同的用户和总提交。@harishvc您需要学习从其他人的代码中剪切和粘贴,并了解明显的输入错误在哪里。更正。