在mongodb上映射reduce



我从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函数中,你不是每个键都只是一个键值对吗?

来自文档:

values参数是一个数组,其元素是"映射"到键的值对象。

MongoDB可以为同一个键多次调用reduce函数。在这种情况下,该键的reduce函数的上一个输出将成为该键的下一个reduce功能调用的输入值之一。

最新更新