2

是否emit()保证将同一键的所有 s 发送到 reduce 函数?

例如,如果您有 100 万个文档,emit()每个文档只有一次,但只有 10 个可能的emit()键(均匀分布),reduce 函数会在一次调用中被 100k 排放量猛烈抨击吗?

或者 mongo 会将这些拆分并逐渐减少结果?如果是这样,它如何决定向 reduce 发送多少值?

4

1 回答 1

5

同一个键的所有 emit() 将被发送到 reduce 函数,但它们不一定会立即发送到 reduce 函数(如果为特定键发出单个文档,则该文档不会传递给reduce函数)。对于同一个键,Reduce 可能会被多次调用,这就是为什么 reduce 函数的结果必须与 map 函数发出的文档结构相匹配的原因。

我将尝试找出更多关于 mongo 在将文档传递给 reduce 函数之前如何以及何时拆分文档背后的逻辑的信息。

于 2012-06-29T15:42:11.630 回答