0

このユースケースで概説されているものと同様の事前集計されたメトリックを持つデータベースがあります: http://docs.mongodb.org/manual/use-cases/pre-aggregated-reports/

時間と分のメトリックのサブドキュメントと、それが表す日の真夜中の「metadata.date」エントリを含む毎日のコレクションがあります。また、毎日の日のサブドキュメントを含む月次コレクションもあります。

過去 8 日間ほどのメトリックの平均を取得したい場合、集計フレームワークを使用してどのようにそれを行うことができますか? 事前に集計されているため、集計フレームワークはこれに適したツールではありませんか?

4

1 に答える 1

0

私はこれに map/reduce を使用することになりました:

地図:

var map = function(){
          for(x in this.hour){
              var key = this.metadata.port_name;
              var value = {
                  count: 1,
                  value: this.hour[x]
              }
              emit(key, value);
          }
        };

減らす:

var reduce = function(key, value){
          reducedValue = { count: 0, value: 0 };
          for(var i = 0; i < value.length; i++){
              reducedValue.count += value[i].count;
              reducedValue.value += value[i].value;
          }

          return reducedValue;
        };

ファイナライズ:

var finalize = function(key, reducedValue){
        reducedValue.average = reducedValue.value/reducedValue.count;

        return reducedValue;
      };

実際にはかなり単純です。

于 2013-01-29T19:31:39.397 に答える