以前我问过将密钥列表传递给CouchDB的reduce函数的用例是什么?答案(https://stackoverflow.com/a/46713674/3114742)提到了两个潜在的用例:
MapReduce的所有实现是否都将一组键作为reduce函数的输入? CouchDB专门跟踪生成密钥的原始文档。即CouchDB减少函数的输入:
function(keys, values, rereduce) {...}
键arg如下所示:[[key1,id1], [key2,id2], [key3,id3]]
。
即。 Couch通过Map函数跟踪发出键的实体,即使在reduce函数中也是如此。其他MapReduce实现是否跟踪这些信息?或者这是特定于CouchDB ......
答案 0 :(得分:1)
并非所有mapreduce实现都具有与couchdb相同的结构。 例如,在mongodb mapreduce中,与couch db不同,只有一个键和值列表。因此,map函数发出的所有键都被分组并作为一个键和值列表传递以减少函数。
示例:
emit(1,10)
emit(1,20)
将分组到
reduce(1,[10,20])