mongodb學習3---mongo的MapReduce

來源:互聯網
上載者:User

標籤:

1,概述
MapReduce是個非常靈活和強大的資料彙總工具。它的好處是可以把一個彙總任務分解為多個小的任務,分配到多伺服器上平行處理。MongoDB也提供了MapReduce,當然查詢語肯定是JavaScript。
MongoDB中的MapReduce相當於關聯式資料庫中的group by。使用MapReduce要實現兩個函數Map和Reduce函數。Map函數調用emit(key,value),遍曆Collection中所有的記錄,將key與value傳遞給Reduce函數進行處理。
2,基本文法

db.runCommand({mapreduce:<collection>,map:<mapfunction>,reduce:<reducefunction>,[,query:<query filter object>][,sort:<sorts the input objects using this key.Useful for optimization,like sorting by the emit key for fewer reduces>][,limit:<number of objects to return from collection>][,out:<see output options below>][,keeptemp:<true|false>][,finalize:<finalizefunction>][,scope:<object where fields go into javascript global scope>][,verbose:true]});

 


參數說明:
Mapreduce:要操作的目的地組合
Map:映射函數(產生索引值對序列,作為reduce函數參數)
Reduce:統計函數
Query:目標記錄過濾
Sort:目標記錄排序
Limit:限制目標記錄數量
Out:統計結果存放集合(不指定使用臨時集合,在用戶端斷開後自動刪除)
Keeptemp:是否保留臨時集合
Finalize:最終處理函數(對reduce返回結果進行最終整理後存入結果集合)
Scope:向map、reduce、finalize匯入外部變數
Verbose:顯示詳細的時間統計資訊。

 

3,應用執行個體
(1)查詢active表,每個cid對應的次數。相當於以cid分組。

map=function (){ emit(this.cid,{count:1})}reduce=function(key,values){    var cnt=0;       values.forEach(function(val){ cnt+=val.count;});      return {"count":cnt};}db.active.mapReduce(map,reduce,{out:‘mr1‘})(2)按cid和日期分組map=function(){ emit({cdi:this.cid,cd:this.cd},{count:1})}reduce=function(key,values){    var cnt=0;       values.forEach(function(val){ cnt+=val.count;});      return {"count":cnt};}db.active.mapReduce(map,reduce,{out:‘mr2‘})(3)每個cid的產品數量,總金額是多少map=function(){  emit(this.cid,{amount:this.price,count:1})}reduce=function (key,values){    var res={amount:0,count:0}    values.forEach(function(val){         res.amount+=val.amount;        res.count+=val.count    });      return res;}db.test.mapReduce(map,reduce,{out:"mr3"})

我的總結:在mongodb中,map對集合分組。reduce對分組結果匯總。

mongodb學習3---mongo的MapReduce

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.