日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python - mongodb 去重

瀏覽:190日期:2022-08-05 17:07:12

問題描述

爬取了一個用戶的論壇數據,但是這個數據庫中有重復的數據,于是我想把重復的數據項給去掉。數據庫的結構如下python - mongodb 去重

里邊的forundata是這個帖子的每個樓層的發言情況。但是因為帖子爬取的時候有可能重復爬取了,我現在想根據里邊的urlId來去掉重復的帖子,但是在去除的時候我想保留帖子的forumdata(是list類型)字段中列表長度最長的那個。用mongodb的distinct方法只能返回重復了的帖子urlId,都不返回重復帖子的其他信息,我沒法定位。。。假如重復50000個,那么我還要根據這些返回的urlId去數據庫中find之后再在mongodb外邊代碼修改嗎?可是即使這樣,我發現運行的時候速度特別慢。之后我用了group函數,但是在reduce函數中,因為我要比較forumdata函數的大小,然后決定保留哪一個forumdata,所以我要傳入forumdata,但是有些forumdata大小超過了16M,導致報錯,然后這樣有什么解決辦法嗎?或者用第三種方法,用Map_reduce,但是我在map-reduce中的reduce傳入的forumdata大小限制竟然是8M,還是報錯。。。

代碼如下group的代碼:

reducefunc=Code( ’function(doc,prev){’ ’if (prev==null){’ ’prev=doc’ ’}’ ’if(prev!=null){’ ’if (doc.forumdata.lenth>prev.forumdata.lenth){’ ’prev=doc’ ’}’ ’}’ ’}’)

map_reduce的代碼:

reducefunc=Code( ’function(urlId,forumdata){’ ’if(forumdata.lenth=1){’ ’return forumdata[0];’ ’}’ ’else if(forumdata[0].lenth>forumdata[1].lenth){’ ’return forumdata[0];’ ’}’ ’else{’ ’return forumdata[1]}’ ’}’)mapfunc=Code( ’function(){’ ’emit(this.urlId,this.forumdata)’ ’}’)

望各位高手幫我看看這個問題該怎么解決,三個方案中隨便各一個就好,或者重新幫我分析一個思路,感激不盡。鄙人新人,問題有描述不到位的地方請提出來,我會立即補充完善。

問題解答

回答1:

如果這個問題還沒有解決,不妨參考下面的想法:

1、MongoDB中推薦使用aggregation,而不推薦使用map-reduce;

2、您的需求中,很重要的一點是獲取Forumdata的長度:數組的長度,從而找到數組長度最長的document。您原文說Forumdata是列表(在MongoDB中應該是數組);MongoDB提供了$size運算符號取得數組的大小。

請參考下面的栗子:

> db.data.aggregate([ {$project : { '_id' : 1, 'name' : 1, 'num' : 1, 'length' : { $size : '$num'}}}]){ '_id' : ObjectId('58e631a5f21e5d618900ec20'), 'name' : 'a', 'num' : [ 12, 123, 22, 34, 1 ], 'length' : 5 }{ '_id' : ObjectId('58e631a5f21e5d618900ec21'), 'name' : 'b', 'num' : [ 42, 22 ], 'length' : 2 }{ '_id' : ObjectId('58e631a7f21e5d618900ec22'), 'name' : 'c', 'num' : [ 49 ], 'length' : 1 }

3、有了上面的數據后,然后可以利用aggregation中的$sort,$group等找到滿足您的需求的Document的objectId,具體做法可以參考下面的帖子:

https://segmentfault.com/q/10...

4、最后批量刪除相關的ObjectId

類似于:var dupls = [] 保存要刪除的objectIddb.collectionName.remove({_id:{$in:dupls}})

供參考。

Love MongoDB! Have Fun!

戳我<--請戳左邊,就在四月!MongoDB中文社區深圳用戶大會開始報名啦!大神云集!

回答2:

數據量的規模不是很大的話可以考慮重新爬取一次,每次存的時候查詢一下,只存數據最多的一組數據。優秀的爬蟲策略>>優秀的數據清洗策略

回答3:

感謝各位網友,在qq群中,有人給出了思路,是在map的是先以urlId對forumdata進行處理,返回urlId和forumdatad.length,之后再在reduce中處理,保留forumdata.length最大的那個和對應的urlId,最后保存成一個數據庫,之后通過這個數據庫中的urlId來從原數據庫中將所有數據讀取出來。我試過了,雖然效率不是我期望的那種,不過速度還是比以前用python處理快了不少。附上map和reduce的代碼:’’’javaScriptmapfunc=Code(

’function(){’’data=new Array();’’data={lenth:this.forumdata.length,’’id:this._id};’# ’data=this._id;’’emit({'id':this.urlId},data);’’}’)

reducefunc=Code(

’function(tieziID,dataset){’’reduceid=null;’’reducelenth=0;’’’’’’redecenum1=0;’’redecenum2=0;’’’’dataset.forEach(function(val){’’if(reducelenth<=val['lenth']){’’reducelenth=val['lenth'];’’reduceid=val['id'];’’redecenum1+=1;’’}’’redecenum2+=1;’’});’’return {'lenth':reducelenth,'id':reduceid};’’}’ )

上邊是先導出一個新的數據庫的代碼,下邊是處理這個數據庫的代碼:

mapfunc=Code(

’function(){’# ’data=new Array();’’lenth=this.forumdata.length;’’’’emit(this.urlId,lenth);’’}’

)

reducefunc=Code(

’function(key,value){’’return value;’’}’

)

之后添加到相應的map_reduce中就行了。感覺Bgou回答的不錯,所以就選他的答案了,還沒有去實踐。上邊是我的做法,就當以后給遇到同樣問題的人有一個參考。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品伊人| 好看的av在线不卡观看| 九一成人免费视频| 国产精品极品| 日韩免费精品| 好吊日精品视频| 国产精品毛片aⅴ一区二区三区| 国产精品7m凸凹视频分类| 免费观看久久久4p| 久久要要av| 性欧美videohd高精| 美女性感视频久久| 国产日韩高清一区二区三区在线| 午夜宅男久久久| 欧美不卡高清| 国产精品原创| 精品久久91| 日韩国产欧美三级| 亚洲一区二区日韩| 亚洲激情不卡| 成人av二区| 亚洲性色视频| 欧美一区三区| 久久久久国产| 久久精品国产精品亚洲毛片| 91亚洲无吗| 天堂久久av| 中文字幕日韩欧美精品高清在线| 日本韩国欧美超级黄在线观看| 国产精品黄网站| 日韩av电影一区| 日韩在线二区| 在线一区二区三区视频| 999在线观看精品免费不卡网站| 欧美日韩1区| 蜜臀av在线播放一区二区三区| 亚洲综合精品| 国产精品嫩草99av在线| 中文字幕系列一区| 国产成人精品三级高清久久91| 精品国产精品国产偷麻豆| 精品国产欧美日韩| 国产一区福利| 国精品产品一区| 伊人网在线播放| 91精品国产自产在线观看永久∴| 成人羞羞视频播放网站| 国产一区日韩欧美| 欧美日韩在线观看视频小说| 美女福利一区二区三区| 午夜av成人| 99成人在线视频| 欧美91福利在线观看| 欧美日韩国产亚洲一区| 国产日产一区| 97国产精品| 国产在线成人| 美女被久久久| 日本中文字幕视频一区| 日韩免费精品| 精品国产乱码久久久久久樱花| 高清日韩中文字幕| 日韩精品欧美| 麻豆成人综合网| 精品免费av| 免费一级欧美片在线观看网站| 国产美女高潮在线观看| 亚洲国内精品| 少妇精品久久久一区二区三区| 国产精品视区| 国产一区二区三区四区二区| 福利欧美精品在线| 婷婷中文字幕一区| 婷婷综合成人| 成人日韩精品| 免费人成精品欧美精品| 欧美一级久久| 亚洲精品888| 欧美日韩一区自拍| 欧美特黄一级| 国产精品亚洲综合久久| 精精国产xxxx视频在线野外| 久久成人国产| 牛牛精品成人免费视频| 精品资源在线| 日韩精品首页| 日本aⅴ精品一区二区三区 | 国产精品久久久久久久久久10秀 | 综合日韩av| 免费观看久久久4p| 日韩.com| 蜜桃久久av一区| 国产一区二区三区精品在线观看| 美女视频黄久久| 久久狠狠婷婷| 亚洲区国产区| 久久中文字幕av| 国产女人18毛片水真多18精品| 久久久久欧美精品| 欧美一区精品| 在线 亚洲欧美在线综合一区| 日韩精品亚洲专区在线观看| 日韩av资源网| 久久美女性网| 国产日韩免费| 日韩精品一级二级 | 免播放器亚洲一区| 麻豆极品一区二区三区| 91久久午夜| 国产69精品久久| 欧美精选一区二区三区| 国产精品片aa在线观看| 国产成人精品一区二区三区在线| 久久亚洲图片| 欧美日韩国产v| 日韩激情网站| 欧美精品一区二区久久| caoporn视频在线| 热久久久久久| 日韩欧美午夜| 国产一卡不卡| 在线一区二区三区视频| 中文字幕高清在线播放| 欧美精品中文字幕亚洲专区| 日韩一区二区久久| 激情黄产视频在线免费观看| 久久精品凹凸全集| 欧美日韩国产高清| 日韩欧美午夜| 精品视频在线观看网站| 日韩av午夜在线观看| 久久亚洲美女| 欧美 日韩 国产一区二区在线视频 | 成人午夜亚洲| 日本a口亚洲| 蜜臀av一区二区在线免费观看| 福利欧美精品在线| 免费在线亚洲| 国产免费久久| 日本成人手机在线| 国产精品99久久免费观看| 成人高清一区| 色爱av综合网| 日韩免费福利视频| 国产精品qvod| 免费精品视频最新在线| 欧美/亚洲一区| 日本精品影院| 久久国内精品| 香蕉久久国产| 国产精品yjizz视频网| 亚洲91久久| 精品捆绑调教一区二区三区 | 日韩精品视频在线看| 欧美综合二区| 国产美女精品| 亚洲在线一区| 亚洲精华国产欧美| 日本黄色精品| 97精品国产福利一区二区三区| 国产一区二区三区不卡视频网站| 精品国产亚洲一区二区在线观看| 久久激情综合网| 国产欧美日韩在线一区二区| 免费人成网站在线观看欧美高清| 久久av在线| 亚洲一区二区毛片| 欧美女激情福利| 亚洲一区二区三区高清| 亚洲欧美日韩高清在线| 亚洲黄页一区| 水蜜桃久久夜色精品一区的特点| 麻豆精品91| 亚洲欧美在线综合| 精品久久97| 日韩一区二区三区免费播放| 日韩久久一区二区三区| 999久久久免费精品国产| 黑丝美女一区二区| 久久精品系列| 国产在线观看www| 久久精品国产大片免费观看| 亚洲一区日本| 久久国产精品99国产| 日韩成人精品一区二区三区| 国产精品一区二区免费福利视频 | 亚洲一区二区毛片| 亚洲在线久久| 日韩毛片一区| 欧美激情亚洲| jizzjizz中国精品麻豆| 久久久久伊人| 欧美国产小视频| 老司机精品视频在线播放| 久久久久九九精品影院| 日韩欧美在线中字| 国产亚洲毛片在线| 欧美视频一区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 亚洲v天堂v手机在线|