在mongodb上映射reduce

时间:2021-03-19 21:25:04

标签: mongodb mapreduce

我从 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 函数中每个键只有一个键值对吗?

1 个答案:

答案 0 :(得分:0)

来自docs

<块引用>

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

<块引用>

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