溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb中使用mapreduce進行分組統計

發布時間:2020-07-29 12:51:20 來源:網絡 閱讀:1472 作者:990653058 欄目:MongoDB數據庫

最近在統計某一個時間段的url去重數,由于數據量巨大導致報錯,提示:

distinct failed: {
"errmsg" : "exception: distinct too big, 16mb cap",
"code" : 17217,
"ok" : 0
} at src/mongo/shell/collection.js:1108

最終通過mapreduce來解決如下:

//定義map函數
map=function(){
    emit(this.url,{"count":1});
}
//定義reduce函數
reduce=function(key,values){
    var total=0;
    for(var i=0; i < values.length; i++){
        total+=values[i].count;
    }
    return {count:total}
}
//執行mapreduce函數,其中out的值是存儲執行結果的集合
db.runCommand({"mapreduce":"visit","map":map,"reduce":reduce,"query":{"vtime":{"$gte":1412611200,"$lte":1413907119}},"out":"test.tmp"});

關于mapreduce的選項解釋如下:

"out":{replace:"collection name"} -- mapreduce輸出結果會替換掉原來的collection,collection不存在則創建
"out":{merge:"collection name"} -- 將新老數據進行合并,新的替換舊的,沒有的添加進去
"out":{reduce:"collection name"}-- 存在老數據時,在原來的基礎上加新的數據(即new value=old value+mapreduce value)
"out":{inline:1} -- 不會創建collection,結果保存在內存里面,只限于結果小于16MB的情況


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女