知識點 MapReduce

mongodb的MapReduce學習Map-Reduce部分:Map-Reduce至關於關係型數據庫中的group by,主要用於統計數據之用。MongoDB提供的Map-Reduce很是靈活,對於大規模數據分析也至關實用。語法db.collection.mapReduce(   map,          // 即map函數。映射函數(生成鍵值對序列,做爲reduce的參數)。   reduce,       // 即reduce函數。統計函數。   options       // 一些選項)使用Map-Reduce要實現兩個函數map函數和reduce函數,map函數調用emit(key, value),遍歷collection中全部的文檔,將key與value傳遞給reduce函數進行處理。map函數必須調用emit(key, value) 返回鍵值對。參數說明map函數部分做用:用於分組函數:function map(){    emit(param1, param2);  }參數說明:  param1:須要分組的字段,this.字段名  param2:須要進行統計的字段,this.字段名reduce部分做用:處理須要統計的字段函數:function reduce(key, values){    // 統計字段處理  }參數說明:  key: 指分組字段(emit的param1)對應的值  values:指須要統計的字段(emit的param2)值組成的數組幾個簡單的統計經常使用方法1.對數值類型進行求和function reduce(key, values){    return Array.sum(values);}2.對字符串類型進行拼湊function reduce(key, values){    return values.join(', ');}option部分out:將統計結果存放到集合中 (不指定則使用臨時集合,在客戶端斷開後自動刪除)query:一個篩選條件,只有知足條件的文檔纔會調用map函數(query,limit,sort能夠隨意組合)sort:和limit結合的sort排序參數(也是在發往map函數前給文檔排序),能夠優化分組機制limit:發往map函數的文檔數量的上限(要是沒有limit,單獨使用sort的用處不大)例子先插入一些測試用的數據。>db.mythings.insert({location:'Guangzhou', population:2400})>db.mythings.insert({location:'Shanghai', population:2500})>db.mythings.insert({location:'Beijing', population:2200})>db.mythings.insert({location:'Shenzhen', population:2100})>db.mythings.insert({location:'Guangzhou', population:2400})>db.mythings.insert({location:'Shanghai', population:2500})>db.mythings.insert({location:'Beijing', population:2200})>db.mythings.insert({location:'Shenzhen', population:2100})需求:統計各城市的人口總數。>function map(){    emit(this.location, this.population);}>function reduce( key, values ){    return {"城市":key, "總數":Array.sum(values)};}>db.mythings.mapReduce( map, reduce, {   out: "popu_counts",   query: {}}).find()
相關文章
相關標籤/搜索