我从 mongodb
上的 map reduce 开始,我正在使用这个 reduce 函数
function(key, values) {
print("reduce key=" + key + " values=" + values);
return Array.sum(values);
}
我使用打印来查看函数内部发生了什么,我在日志中看到了这一点
[conn32] reduce key=3 values=122400,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2021-03-19T19:18:32.123+0000 I - [conn32] reduce key=3 values=122500,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2021-03-19T19:18:32.125+0000 I - [conn32] reduce key=3 values=122600,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
我多次看到键 3,不应该在 reduce 函数中每个键只有一个键值对吗?
答案 0 :(得分:0)
来自docs:
<块引用>values 参数是一个数组,其元素是“映射”到键的值对象。
<块引用>MongoDB 可以为同一个键多次调用 reduce 函数。在这种情况下,该键的reduce 函数的先前输出将成为该键的下一个reduce 函数调用的输入值之一。