mongo命令行下去除重复的数据

  好久没有写博客了,前段时间才换了工作,一直很忙,抽不出时间来写,当时暗下决心要每周至少写一篇,记录自己工作中踩过的坑和掌握的一些技巧,但每天要忙的事太多了,还要花时间学习其他的新知识,所以博客的事就抛到脑后了。

  今天写了个爬虫,发现数据有问题,一查才发现,有些数据重复了,我用的数据库是mongo3.2版本的,于是上网查了下,怎么删除mongo重复的数据,结果是查到了,但是我的数据库达到百万条,命令处理不了,报错了,于是又去网上查了一下解决方案,最后终于搞定了。

  现在我总结一下在大数据下mongo怎么去重的

db.cps_goods.aggregate([
    {
        $group: { _id: {product_url: '$product_url'},count: {$sum: 1},dups: {$addToSet: '$_id'}}
    },
    {
        $match: {count: {$gt: 1}}
    }
],{
         allowDiskUse: true
     }).forEach(function(doc){
    doc.dups.shift();
    db.cps_goods.remove({_id: {$in: doc.dups}});
})

  关键是 allowDiskUse: true 这个,加上这个就不会出错了

 

参考博文:

 
有什么不对的欢迎评论留言,谢谢
posted @ 2017-11-26 22:26  tk2049jq  阅读(1314)  评论(0编辑  收藏  举报