MongoDB MapReduce每个键有很多emit()

时间:2012-06-28 06:24:59

标签: mongodb mapreduce

是否保证同一密钥的所有emit()都被发送到reduce函数?

例如,如果您有100万个文档emit()每个文档一次,但只有10个emit()个密钥(均匀分布),那么reduce函数会在一次调用中受到100k排放的影响?

或者mongo将这些分开并逐渐减少结果?如果是这样,它如何决定发送给reduce的值?

1 个答案:

答案 0 :(得分:5)

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

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