最近在統(tǒng)計(jì)某一個(gè)時(shí)間段的url去重?cái)?shù),由于數(shù)據(jù)量巨大導(dǎo)致報(bào)錯(cuò),提示:
在寧城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),寧城網(wǎng)站建設(shè)費(fèi)用合理。distinct failed: { "errmsg" : "exception: distinct too big, 16mb cap", "code" : 17217, "ok" : 0 } at src/mongo/shell/collection.js:1108最終通過mapreduce來解決如下:
//定義map函數(shù) map=function(){ emit(this.url,{"count":1}); }//定義reduce函數(shù) reduce=function(key,values){ var total=0; for(var i=0; i < values.length; i++){ total+=values[i].count; } return {count:total} }//執(zhí)行mapreduce函數(shù),其中out的值是存儲(chǔ)執(zhí)行結(jié)果的集合 db.runCommand({"mapreduce":"visit","map":map,"reduce":reduce,"query":{"vtime":{"$gte":1412611200,"$lte":1413907119}},"out":"test.tmp"});關(guān)于mapreduce的選項(xiàng)解釋如下:
"out":{replace:"collection name"} -- mapreduce輸出結(jié)果會(huì)替換掉原來的collection,collection不存在則創(chuàng)建 "out":{merge:"collection name"} -- 將新老數(shù)據(jù)進(jìn)行合并,新的替換舊的,沒有的添加進(jìn)去 "out":{reduce:"collection name"}-- 存在老數(shù)據(jù)時(shí),在原來的基礎(chǔ)上加新的數(shù)據(jù)(即new value=old value+mapreduce value) "out":{inline:1} -- 不會(huì)創(chuàng)建collection,結(jié)果保存在內(nèi)存里面,只限于結(jié)果小于16MB的情況另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。