排除 Reduce Function 问题
在本页面
reduce
function 是一个 JavaScript function,它在map-reduce操作期间“减少”到单个 object 与特定 key 关联的所有值。 reduce
function 必须满足各种要求。本教程有助于验证reduce
function 是否符合以下条件:
reduce
function 必须_retject 一个 object,其类型必须与map
function 发出的value
的类型相同。valuesArray
中元素的 order 不应影响reduce
function 的输出。reduce
function 必须是幂等的。
有关reduce
function 的所有要求的列表,请参阅MapReduce或mongo shell 辅助方法db.collection.mapReduce()。
确认输出类型
您可以测试reduce
function 返回的 value 与map
function 发出的 value 的类型相同。
定义一个
reduceFunction1
function,它接受 argumentskeyCustId
和valuesPrices
。valuesPrices
是整数的 array:定义 sample array 整数:
使用
myTestValues
调用reduceFunction1
:验证
reduceFunction1
返回 integer:定义一个
reduceFunction2
function,它接受 argumentskeySKU
和valuesCountObjects
。valuesCountObjects
是包含两个字段count
和qty
的 array 文档:定义 sample array 文档:
使用
myTestObjects
调用reduceFunction2
:验证
reduceFunction2
返回的文档中包含count
和qty
字段:
确保对映射值的 Order 不敏感
reduce
function 以key
和values
array 为参数。您可以测试reduce
function 的结果不依赖于values
array 中元素的 order。
定义 sample
values1
array 和 samplevalues2
array,它们只在 array 元素的 order 中有所不同:定义一个
reduceFunction2
function,它接受 argumentskeySKU
和valuesCountObjects
。valuesCountObjects
是包含两个字段count
和qty
的 array 文档:先使用
values1
然后使用values2
调用reduceFunction2
:验证
reduceFunction2
返回相同的结果:
确保减少 Function Idempotence
因为 map-reduce 操作可能会为同一个 key 多次调用reduce
,并且不会为工作集中的 key 的单个实例调用reduce
,reduce
function 必须 return 与从该值发出的 value 相同类型的 value。 map
function。您可以测试reduce
function process“减少”值而不影响最终的 value。
定义一个
reduceFunction2
function,它接受 argumentskeySKU
和valuesCountObjects
。valuesCountObjects
是包含两个字段count
和qty
的 array 文档:定义 sample key:
定义 sample
valuesIdempotent
array,其中包含一个调用reduceFunction2
function 的元素:定义一个 sample
values1
array,它结合了传递给reduceFunction2
的值:首先使用
myKey
和valuesIdempotent
调用reduceFunction2
,然后使用myKey
和values1
调用reduceFunction2
:验证
reduceFunction2
返回相同的结果:
译者:李冠飞
校对:
最后更新于