ass*_*z84 4 mongodb aggregation-framework
我有问题收集每个配置文件可以有很多问题.
{"_id":"..." , "pid":"...",.....}
Run Code Online (Sandbox Code Playgroud)
使用mongo DB新聚合框架如何计算每个配置文件的平均问题数量?
尝试了以下没有成功:
{ "aggregate" : "question" , "pipeline" : [ { "$group" : { "_id" : "$pid" , "qCount" : { "$sum" : 1}}} , { "$group" : { "qavg" : { "$avg" : "qCount"} , "_id" : null }}]}
Run Code Online (Sandbox Code Playgroud)
只能由一个集团运营商完成吗?
谢谢.
Der*_*ick 12
为此,您只需要知道问题的数量,以及不同配置文件的数量(用我假设的"pid"唯一标识).使用聚合框架,您需要分两个阶段完成:
你这样做是这样的:
第一步:
db.profiler.aggregate( [
{ $group: { _id: '$pid', count: { '$sum': 1 } } },
] );
Run Code Online (Sandbox Code Playgroud)
哪些输出(在我的情况下,带有一些样本数据):
{
"result" : [
{ "_id" : 2, "count" : 7 },
{ "_id" : 1, "count" : 1 },
{ "_id" : 3, "count" : 3 },
{ "_id" : 4, "count" : 5 }
],
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
我有四个配置文件,分别有7个,1个,3个或5个问题.
现在有了这个结果,我们运行另一个组,但是在这种情况下我们并不真的想要按任何组进行分组,因此我们需要将_id值设置为null,如下面的第二组中所示:
db.profiler.aggregate( [
{ $group: { _id: '$pid', count: { '$sum': 1 } } },
{ $group: { _id: null, avg: { $avg: '$count' } } }
] );
Run Code Online (Sandbox Code Playgroud)
然后输出:
{
"result" : [
{ "_id" : null, "avg" : 4 }
],
"ok" : 1
}
Run Code Online (Sandbox Code Playgroud)
这告诉我平均每个配置文件有4个问题.
| 归档时间: |
|
| 查看次数: |
3032 次 |
| 最近记录: |