這兩天被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結果的各類組合。it