2

emit()同じキーのすべてがreduce関数に送信されることが保証されていますか?

たとえば、100 万のドキュメントemit()があり、各ドキュメントごとに 10 個のemit()キーしか使用できない場合 (均等に分散)、reduce 関数は 1 回の呼び出しで 100k の排出量で非難されますか?

それとも、モンゴはこれらを分割して、結果を徐々に減らしますか? もしそうなら、reduce に送信する値の数をどのように決定しますか?

4

1 に答える 1

5

同じキーのすべての emit() は reduce 関数に送信されますが、一度に reduce 関数に送信されるとは限りません (特定のキーに対して単一のドキュメントが発行された場合、ドキュメントは送信されません)。 reduce 関数に渡されます)。Reduce は同じキーに対して複数回呼び出される可能性があります。そのため、reduce 関数の結果が map 関数によって出力されるドキュメントの構造と一致することが重要です。

reduce 関数にドキュメントを渡す前に、mongo がドキュメントを分割する方法とタイミングの背後にあるロジックに関する詳細情報を見つけようとします。

于 2012-06-29T15:42:11.630 に答える