这两天被mongdb的mapreduce弄得有点晕,先记录下。以后逐步完善。
MapReduce是聚合工具中的明星。count、distinct、group能做的MapReduce都能做到。
reduce function(key,value){....}
reduce一定要能被反复调用,不论是被映射环节还是前一个化简环节。所以reduce返回的文档必须能作为reduce的第二个参数的一个元素。例如,x键映射到了3个文档{count:1,id:1}、{count:1,id:2}和{count:1,id:3},其中id键用于区别。MongoDB可能这样调用reduce: > r1 = reduce("x",[{count:1,id:1},{count:1,id=2}]) {count:2} >r2 = reduce("x",[count:1,id:3]) {count:3} 不能认为第二个参数总是初始文档之一(这里便是{count:1})或者有固定长度。reduce应该能处理emit文档和其他reduce结果的各种组合。