Mongodb Mongo聚合与独特
假设我的集合有用户名、存储库名称和唯一的提交idMongodb 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"}, {
{"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您需要学习从其他人的代码中剪切和粘贴,并了解明显的输入错误在哪里。更正。