在mongodb mapreduce的reduce函數中,參數values是一個數組,可以用values.forEach進行遍歷。
function(key, values){
//values 是一个数组
values.forEach(function(val){
//val即为数组里的元素
});
}
但是values比較大時,values會被拆分存儲,在原本Reduce函數中的forEach只遍歷了第一層的數據,無法遍歷所有的元素。那請問如何遍歷values裡的所有元素?
mapreduce 中還有一個參數 scope ,可以放置 js 函數中所用到的變量,你可以將 value 資料暫存到其中,這樣就能跨越單一 reduce 函數獲得資料了。不過既然是 values 被拆分了,就說明 values 內的資料量較大,如果只是強行把所有的 values 組合起來,並不是一個好的辦法,內存會吃緊。最好還是最佳化 map 函數,較少 values 資料量。