要实现这个功能,您只需要知道问题的数量和不同配置文件的数量(唯一地用“pid”标识)。通过聚合框架,您需要分两个阶段完成此操作:
- 首先,计算每个PID的问题数量
- 然后计算每个PID的问题平均数
您可以按以下方式完成此操作:
第一步:
db.profiler.aggregate( [
{ $group: { _id: '$pid', count: { '$sum': 1 } } },
] );
以下是输出结果(以我的情况和一些示例数据为例):
{
"result" : [
{ "_id" : 2, "count" : 7 },
{ "_id" : 1, "count" : 1 },
{ "_id" : 3, "count" : 3 },
{ "_id" : 4, "count" : 5 }
],
"ok" : 1
}
我有四个档案,分别有7、1、3或5个问题。
现在,我们使用这个结果运行另一组,但在这种情况下,我们实际上不想按任何东西进行分组,因此我们需要将_id
值设置为null,如下面的第二组所示:
db.profiler.aggregate( [
{ $group: { _id: '$pid', count: { '$sum': 1 } } },
{ $group: { _id: null, avg: { $avg: '$count' } } }
] );
然后这个输出:
{
"result" : [
{ "_id" : null, "avg" : 4 }
],
"ok" : 1
}
这告诉我,平均每个档案有4个问题。