是否保证将同一键的所有emit()
发送到reduce函数?
例如,如果您有 100 万个文档,每个文档emit()
一次,但只有 10 个可能的emit()
键(均匀分布),那么 reduce 函数是否会在一次调用中被 100k 排放猛击?
还是 mongo 会把这些分开并逐渐减少结果?如果是这样,它如何决定向 reduce 发送多少个值?
同一键的所有 emit() 都将发送到 reduce 函数,但它们不一定会立即发送到 reduce 函数(如果为特定键发出单个文档,则文档不会传递给 reduce 函数)。 对于同一个键,可以多次调用 Reduce,这就是为什么 reduce 函数的结果与 map 函数发出的文档的结构相匹配很重要的原因。
在将文档传递给reduce函数之前,我将尝试了解有关mongo如何以及何时拆分文档背后的逻辑的更多信息。