このためには、質問の量と、さまざまなプロファイルの量を知る必要があります (「pid」で一意に識別されると思います)。集約フレームワークでは、次の 2 つの段階でそれを行う必要があります。
- まず、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 つの質問を持つ 4 つのプロファイルを持っています。
この結果で、別のグループを実行しますが、この場合、実際には何もグループ化したくありません。したがって、以下の 2 番目のグループに示すように、_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 つの質問があることを示しています。