MongoDB怎么去除大量重复的数据

本文虽然不是完全转载,但是思路及代码均是借鉴于☞不会编程的小猿☜博主的csdn博客,传送门如下:

不会编程的小猿的博客

使用python爬虫采集数据通常会存放到MongoDB数据库中,那采集到的数据可能就会有大量的重复,那么有什么思路能够去重呢,可以使用MongoDB命令对mongo去重,也可以使用第三方库pandas对MongoDB去重,使用pandas很容易,那么怎么使用MongoDB命令对数据库去重呢
首先建立一个有少量重复数据的MongoDB数据库用以模拟

首先,我的数据库名为 subject,集合名为 info
在Navicat中查看一下数据库
在这里插入图片描述
在这里插入图片描述
使用数据库命令看一下有多少条数据db.集合名.count()
在这里插入图片描述
看来有59条数据,但是不重复的数据只有5条,用字典形式展示为:
{‘name’:‘python’,‘age’:31},{‘name’:‘java’,‘age’:30},{‘name’:’.net’,‘age’:28},{‘name’:‘c++’,‘age’:35},{‘name’:‘c’,‘age’:35}
其余都是重复的数据

那么就可以在mongo shell里输入命令进行去重了

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

然后,结果如下:
去重后的数据库

至于代码中的一些参数,如果不懂的话可以去原博主的博客里看,也可以去网上查,我就不再描述了,原博客的传送门在文章最上方

嗯,就这样了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值