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