0

Mongo で NumberLong 型の数百万件のレコードの平均を計算しようとしています。ただし、サイズが原因で、集計と $avg は機能しません。

それを解決するための良いアプローチはありますか?

4

1 に答える 1

2

これにはMapReduceを使用できます。

マップ関数は、各ドキュメントを取得し、2 つのフィールドを持つオブジェクトを出力します。1 つのフィールドvalueは平均したい値を持ち、もう 1 つのフィールドcountは の値を持ちます1

次に、reduce 関数は、フィールドとそれに渡されたすべてのオブジェクトcountのフィールドの両方を合計し、要約されたドキュメントの数とそれらの合計を表す 1 つのオブジェクトを返します。value

ファイナライズ関数は、結果のオブジェクトの数で値を割り、この数値を返します。

公式ドキュメントの 2 番目の MapReduce の例は、ユースケースに非常に近いため、参考として使用できるはずです。唯一の違いは、コレクションのサブセットの個別の平均値ではなく、1 つの平均値のみが必要なためkey、定数値に置き換えることです。

于 2013-07-28T11:00:07.707 に答える