欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB學(xué)習(xí)筆記之MapReduce使用示例

 更新時(shí)間:2015年07月04日 15:31:26   投稿:junjie  
這篇文章主要介紹了MongoDB學(xué)習(xí)筆記之MapReduce使用示例,本文直接給出實(shí)例代碼,需要的朋友可以參考下

一、mapreduce是根據(jù)map函數(shù)里調(diào)用的emit函數(shù)的第一個(gè)參數(shù)來進(jìn)行分組的

Map-Reduce是一種計(jì)算模型,簡(jiǎn)單的說就是將大批量的工作(數(shù)據(jù))分解(MAP)執(zhí)行,然后再將結(jié)果合并成最終結(jié)果(REDUCE)。

使用 MapReduce 要實(shí)現(xiàn)兩個(gè)函數(shù) Map 函數(shù)和 Reduce 函數(shù), Map 函數(shù)調(diào)用 emit(key, value), 遍歷 collection 中所有的記錄, 將key 與 value 傳遞給 Reduce 函數(shù)進(jìn)行處理。Map 函數(shù)必須調(diào)用 emit(key, value) 返回鍵值對(duì)。

參數(shù)說明:
1. map :映射函數(shù) (生成鍵值對(duì)序列,作為 reduce 函數(shù)參數(shù))。
2. reduce 統(tǒng)計(jì)函數(shù),reduce函數(shù)的任務(wù)就是將key- values變成key-value,也就是把values數(shù)組變成一個(gè)單一的值value。
3. out 統(tǒng)計(jì)結(jié)果存放集合 (不指定則使用臨時(shí)集合,在客戶端斷開后自動(dòng)刪除)。
4. query 一個(gè)篩選條件,只有滿足條件的文檔才會(huì)調(diào)用map函數(shù)。(query。limit,sort可以隨意組合)
5. sort 和limit結(jié)合的sort排序參數(shù)(也是在發(fā)往map函數(shù)前給文檔排序),可以優(yōu)化分組機(jī)制
6. limit 發(fā)往map函數(shù)的文檔數(shù)量的上限(要是沒有l(wèi)imit,單獨(dú)使用sort的用處不大)

//測(cè)試數(shù)據(jù)準(zhǔn)備
db.user.drop();

for(var i=10; i< 100; i++) {
  db.user.insert({
    name:"user" + i, 
    age : Math.floor(Math.random()*10)+ 20, 
    sex : Math.floor(Math.random()*3)%2 ==0 ? 'M' : 'F',
    chinese : Math.floor(Math.random()*50)+50,
    math : Math.floor(Math.random()*50)+50,
    english : Math.floor(Math.random()*50)+50,
    class : "C" + i%5
  })
}


// runCommand運(yùn)行方式
db.sales.runCommand({
  mapreduce: "user",

  map: function(){
    if(this.class == "C1") {
      emit(this.age, this.age);
    }
  },

  reduce: function(key,values){
    var maxValue = Max(key, values);
    return maxValue;
  },

  {
    out: {inline: 1},
    query : "",
    sort: "",
    limit: "",
  }
})


db.user.mapReduce(
  // 映射函數(shù),里面會(huì)調(diào)用emit(key,value),集合會(huì)按照你指定的key進(jìn)行映射分組。
  function(){
    // 按照emit函數(shù)的第一個(gè)參數(shù)進(jìn)行分組
    // 第二個(gè)參數(shù)的值會(huì)傳遞給reduce
    emit(this.age, this);  
  },

  // 簡(jiǎn)化函數(shù),會(huì)對(duì)map分組后的數(shù)據(jù)進(jìn)行分組簡(jiǎn)化
  // 在reduce(key,value)中的key就是emit中的key, vlaues為emit分組后的emit(value)的集合
  function(key, values){
    var maxValue = Math.max(key, values);
    return maxValue;
  },

  // 可選參數(shù)
  {
    query: {sex: "F"},
    out: "result",
    sort : {},
    limit : 0
  }
)

執(zhí)行結(jié)果:

{
  "result" : "result", // 存放的集合名
  "timeMillis" : 23,
  "counts" : {
    "input" : 29, // 傳入文檔的個(gè)數(shù)
    "emit" : 29,  // 此函數(shù)被調(diào)用的次數(shù)
    "reduce" : 6, // 此函數(shù)被調(diào)用的次數(shù)
    "output" : 8  // 最后返回文檔的個(gè)數(shù)
  },
  "ok" : 1
}

查看返回的結(jié)果:

db.result.find()

相關(guān)文章

  • MongoDB聚合$listSampledQueries實(shí)例操作

    MongoDB聚合$listSampledQueries實(shí)例操作

    使用$listSampledQueries可以返回指定集合或所有集合的采樣查詢,analyzeShardKey命令使用采樣查詢來計(jì)算分片密鑰的讀寫分布指標(biāo),這篇文章主要介紹了MongoDB聚合$listSampledQueries,需要的朋友可以參考下
    2024-02-02
  • mongodb使用docker搭建replicaSet集群與變更監(jiān)聽(最新推薦)

    mongodb使用docker搭建replicaSet集群與變更監(jiān)聽(最新推薦)

    replicaSet和cluster從部署難度相比,replicaSet要簡(jiǎn)單許多。如果所存儲(chǔ)的數(shù)據(jù)量規(guī)模不算太大的情況下,那么使用replicaSet方式部署mongodb是一個(gè)不錯(cuò)的選擇,這篇文章主要介紹了mongodb使用docker搭建replicaSet集群與變更監(jiān)聽,需要的朋友可以參考下
    2023-03-03
  • 關(guān)于mongodb初始化以及配置方式

    關(guān)于mongodb初始化以及配置方式

    這篇文章主要介紹了關(guān)于mongodb初始化以及配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mac下使用brew 安裝mongodb的方法教程

    mac下使用brew 安裝mongodb的方法教程

    mac 系統(tǒng)常用的軟件安裝工具就是 homebrew.那么通過brew怎么安裝mongodb呢?下面小編給大家分享mac下使用brew 安裝mongodb的方法教程,一起看看吧
    2016-10-10
  • Mongodb多鍵索引中索引邊界的混合問題小結(jié)

    Mongodb多鍵索引中索引邊界的混合問題小結(jié)

    Mongodb為提高數(shù)組的查詢效率,針對(duì)數(shù)組構(gòu)建了多鍵索引,而Mongodb在應(yīng)用多鍵數(shù)組查詢時(shí),也通過構(gòu)建,減少數(shù)組查詢的數(shù)值范圍,來提高查詢性能,本文結(jié)合Mongodb官方文檔,闡述Mongodb在使用多鍵索引時(shí)的邊界優(yōu)化,感興趣的朋友一起看看吧
    2024-07-07
  • MongoDB的備份與恢復(fù)

    MongoDB的備份與恢復(fù)

    這篇文章主要介紹了MongoDB的備份與恢復(fù),幫助大家更好的理解和學(xué)習(xí)使用MongoDB,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB 簡(jiǎn)單入門教程(安裝、基本概念、創(chuàng)建用戶)

    MongoDB 簡(jiǎn)單入門教程(安裝、基本概念、創(chuàng)建用戶)

    這篇文章主要介紹了MongoDB 簡(jiǎn)單入門教程(安裝、基本概念、創(chuàng)建用戶)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB數(shù)據(jù)庫性能監(jiān)控詳解

    MongoDB數(shù)據(jù)庫性能監(jiān)控詳解

    MongoDB作為圖片和文檔的存儲(chǔ)數(shù)據(jù)庫,為啥不直接存MySQL里,還要搭個(gè)MongoDB集群,麻不麻煩?這篇文章就帶你介紹MongoDB數(shù)據(jù)庫性能監(jiān)控,感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • mongodb中ObjectId和ObjectIdr實(shí)現(xiàn)

    mongodb中ObjectId和ObjectIdr實(shí)現(xiàn)

    本文主要介紹了mongodb中ObjectId和ObjectIdr實(shí)現(xiàn)
    2023-12-12
  • MongoDB 主從復(fù)制實(shí)例講解

    MongoDB 主從復(fù)制實(shí)例講解

    這篇文章主要介紹了MongoDB 主從復(fù)制實(shí)例講解,主從復(fù)制可以用來數(shù)據(jù)庫備份,故障恢復(fù),讀寫分離,有興趣的小伙伴可以參考下本文
    2016-10-10

最新評(píng)論