一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - MongoDB - MongoDB學習筆記之MapReduce使用示例

MongoDB學習筆記之MapReduce使用示例

2020-05-03 16:37MongoDB教程網 MongoDB

這篇文章主要介紹了MongoDB學習筆記之MapReduce使用示例,本文直接給出實例代碼,需要的朋友可以參考下

一、mapreduce是根據map函數里調用的emit函數的第一個參數來進行分組的

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

使用 MapReduce 要實現兩個函數 Map 函數和 Reduce 函數, Map 函數調用 emit(key, value), 遍歷 collection 中所有的記錄, 將key 與 value 傳遞給 Reduce 函數進行處理。Map 函數必須調用 emit(key, value) 返回鍵值對。

參數說明:
1. map :映射函數 (生成鍵值對序列,作為 reduce 函數參數)。
2. reduce 統計函數,reduce函數的任務就是將key- values變成key-value,也就是把values數組變成一個單一的值value。
3. out 統計結果存放集合 (不指定則使用臨時集合,在客戶端斷開后自動刪除)。
4. query 一個篩選條件,只有滿足條件的文檔才會調用map函數。(query。limit,sort可以隨意組合)
5. sort 和limit結合的sort排序參數(也是在發往map函數前給文檔排序),可以優化分組機制
6. limit 發往map函數的文檔數量的上限(要是沒有limit,單獨使用sort的用處不大)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//測試數據準備
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運行方式
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(
  // 映射函數,里面會調用emit(key,value),集合會按照你指定的key進行映射分組。
  function(){
    // 按照emit函數的第一個參數進行分組
    // 第二個參數的值會傳遞給reduce
    emit(this.age, this); 
  },
 
  // 簡化函數,會對map分組后的數據進行分組簡化
  // 在reduce(key,value)中的key就是emit中的key, vlaues為emit分組后的emit(value)的集合
  function(key, values){
    var maxValue = Math.max(key, values);
    return maxValue;
  },
 
  // 可選參數
  {
    query: {sex: "F"},
    out: "result",
    sort : {},
    limit : 0
  }
)

執行結果:

?
1
2
3
4
5
6
7
8
9
10
11
{
  "result" : "result", // 存放的集合名
  "timeMillis" : 23,
  "counts" : {
    "input" : 29, // 傳入文檔的個數
    "emit" : 29,  // 此函數被調用的次數
    "reduce" : 6, // 此函數被調用的次數
    "output" : 8  // 最后返回文檔的個數
  },
  "ok" : 1
}

查看返回的結果:

?
1
db.result.find()

延伸 · 閱讀

精彩推薦
  • MongoDB遷移sqlserver數據到MongoDb的方法

    遷移sqlserver數據到MongoDb的方法

    這篇文章主要介紹了遷移sqlserver數據到MongoDb的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    聽楓xl9682021-01-03
  • MongoDBMongodb實現定時備份與恢復的方法教程

    Mongodb實現定時備份與恢復的方法教程

    這篇文章主要給大家介紹了Mongodb實現定時備份與恢復的方法教程,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面...

    chenjsh364522020-05-13
  • MongoDBMongoDB 內存使用情況分析

    MongoDB 內存使用情況分析

    都說 MongoDB 是個內存大戶,但是怎么知道它到底用了多少內存呢...

    MongoDB教程網10002020-09-29
  • MongoDBMongoDB憑什么躋身數據庫排行前五

    MongoDB憑什么躋身數據庫排行前五

    MongoDB以比去年同期超出65.96分的成績繼續雄踞榜單前五,這個增幅在全榜僅次于PostgreSQL的77.99,而其相對于4月份的6.10分的增長也是僅次于微軟SQL Server排名...

    孫浩峰3892020-05-22
  • MongoDB分布式文檔存儲數據庫之MongoDB分片集群的問題

    分布式文檔存儲數據庫之MongoDB分片集群的問題

    這篇文章主要介紹了分布式文檔存儲數據庫之MongoDB分片集群的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋...

    Linux-18743072020-12-20
  • MongoDBMongoDB中javascript腳本編程簡介和入門實例

    MongoDB中javascript腳本編程簡介和入門實例

    作為一個數據庫,MongoDB有一個很大的優勢——它使用js管理數據庫,所以也能夠使用js腳本進行復雜的管理——這種方法非常靈活 ...

    MongoDB教程網6982020-04-24
  • MongoDBMongoDB安裝圖文教程

    MongoDB安裝圖文教程

    這篇文章主要為大家詳細介紹了MongoDB安裝圖文教程,分為兩大部分為大家介紹下載MongoDB和安裝MongoDB的方法,感興趣的小伙伴們可以參考一下 ...

    Yangyi.He6132020-05-07
  • MongoDBmongodb基本命令實例小結

    mongodb基本命令實例小結

    這篇文章主要介紹了mongodb基本命令,結合實例形式總結分析了MongoDB數據庫切換、查看、刪除、查詢等基本命令用法與操作注意事項,需要的朋友可以參考下...

    dawn-liu3652020-05-26
主站蜘蛛池模板: 日韩一级欧美一级一级国产 | 男人和女人上床 | 欧美成狂野欧美在线观看 | 国产欧美二区三区 | 国产午夜大片 | 四虎在线网址 | 欧美日韩一区二区三区在线播放 | 国产在线精品一区二区高清不卡 | 女bbbbxxx孕妇 | 国产成人亚洲精品91专区手机 | 国产91第一页| 国产理论片在线观看 | 午夜无码片在线观看影院 | 欧美日韩一级视频 | 超级碰碰青草免费视频92 | ipx358cn出差被男上司在线 | 深夜网站在线观看 | 亚洲午夜久久久久久91 | 天天操丝袜| 久久青草费线频观看国产 | 国产午夜亚洲精品 | 99在线观看视频免费精品9 | 青草草视频在线观看 | 性做久久久久久久久浪潮 | 4444www免费看| 日本不卡一区二区三区在线观看 | 乌克兰肥熟 | 日韩亚洲国产激情在线观看 | 日日摸日日碰夜夜爽97纠 | beeg最新| 我要色色网 | 男人日女人的逼视频 | 91极品女神久色在线播放 | 99热r| 男同精品视频免费观看网站 | 男人桶女下面60分钟视频 | 把女的下面扒开添视频 | 欧美x×x | 亚洲精品久久久久久婷婷 | 99热免费在线 | 停停色 |