最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)來(lái)進(jìn)行分組的

Map-Reduce是一種計(jì)算模型,簡(jiǎn)單的說(shuō)就是將大批量的工作(數(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ù)說(shuō)明:
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í)集合,在客戶端斷開(kāi)后自動(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ù)量的上限(要是沒(méi)有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基礎(chǔ)命令以及操作示例詳解

    MongoDB基礎(chǔ)命令以及操作示例詳解

    Mongodb:是一種NoSQL數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于MongoDB基礎(chǔ)命令以及操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • mongoDB重裝或升級(jí)版本后,啟動(dòng)失敗原因及解決方法

    mongoDB重裝或升級(jí)版本后,啟動(dòng)失敗原因及解決方法

    這篇文章主要為大家分享一下重裝mongodb或者升級(jí)mongdb版本后,重啟啟動(dòng)也沒(méi)有任何錯(cuò)誤提示,但是查看為失敗failed狀態(tài),沒(méi)有啟動(dòng)成功問(wèn)題的解決方法
    2024-05-05
  • 高效mongodb的php分頁(yè)類(不使用skip)

    高效mongodb的php分頁(yè)類(不使用skip)

    這篇文章主要介紹了高效mongodb的php分頁(yè)類,并且沒(méi)有使用mongodb的skip來(lái)實(shí)現(xiàn)分頁(yè),需要的朋友可以參考下
    2014-05-05
  • 關(guān)于mongodb初始化以及配置方式

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

    這篇文章主要介紹了關(guān)于mongodb初始化以及配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MongoDB Remove函數(shù)的3個(gè)常見(jiàn)用法

    MongoDB Remove函數(shù)的3個(gè)常見(jiàn)用法

    這篇文章主要介紹了MongoDB Remove函數(shù)的3個(gè)常見(jiàn)用法,需要的朋友可以參考下
    2014-05-05
  • MongoDB游標(biāo)超時(shí)問(wèn)題的4種解決方法

    MongoDB游標(biāo)超時(shí)問(wèn)題的4種解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB游標(biāo)超時(shí)問(wèn)題的4種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MongoDB高可用與分片

    MongoDB高可用與分片

    最近項(xiàng)目在使用MongoDB作為圖片和文檔的存儲(chǔ)數(shù)據(jù)庫(kù),為啥不直接存MySQL里,還要搭個(gè)MongoDB集群,麻不麻煩?讓我們一起,一探究竟,繼續(xù)學(xué)習(xí)MongoDB高可用和片鍵策略,實(shí)現(xiàn)快速入門,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • Mongodb增加、移除Shard Server實(shí)例

    Mongodb增加、移除Shard Server實(shí)例

    這篇文章主要介紹了Mongodb增加、移除Shard Server實(shí)例,shard服務(wù)器(Shard Server).Shard服務(wù)器是存儲(chǔ)實(shí)際數(shù)據(jù)的分片,每個(gè)Shard可以是一個(gè)mongod實(shí)例,也可以是一組mongod實(shí)例構(gòu)成的Replica Sets,需要的朋友可以參考下
    2015-01-01
  • MongoDB Map-Reduce 使用方法及原理解析

    MongoDB Map-Reduce 使用方法及原理解析

    MongoDB Map-Reduce 是一種強(qiáng)大的數(shù)據(jù)處理模式,可以用于對(duì)大量數(shù)據(jù)進(jìn)行批量處理和聚合操作,本文將詳細(xì)介紹 MongoDB Map-Reduce 的原理、使用方法和最佳實(shí)踐,需要的朋友可以參考下
    2024-07-07
  • mongoDB 多重?cái)?shù)組查詢(AngularJS綁定顯示 nodejs)

    mongoDB 多重?cái)?shù)組查詢(AngularJS綁定顯示 nodejs)

    這篇文章主要介紹了mongoDB 多重?cái)?shù)組查詢(AngularJS綁定顯示 nodejs),需要的朋友可以參考下
    2017-06-06

最新評(píng)論

株洲市| 石台县| 阿拉尔市| 丰顺县| 青神县| 子长县| 海城市| 闻喜县| 栾川县| 徐汇区| 格尔木市| 渝北区| 贺兰县| 桃源县| 苗栗县| 南涧| 社旗县| 桃园县| 社旗县| 庆城县| 商水县| 柳州市| 玉溪市| 延庆县| 阿拉善左旗| 贡觉县| 平陆县| 霍州市| 含山县| 青浦区| 兴隆县| 义乌市| 四子王旗| 牡丹江市| 抚州市| 永修县| 利辛县| 读书| 公安县| 峨山| 大新县|