管道操作删除 MongoDB 重复数据

本文介绍了一种通过MongoDB的Pipeline操作来清洗数据库中重复数据的方法,适用于大量数据的情况。作者提到,相比每次插入时检查重复,直接进行Pipeline操作可能更快。文中未提供实际速度对比测试,但鼓励读者自行测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

由于 MongoDB 约束性比较小,所以有时候数据库中会有很多重复的数据,特别是爬虫的数据。文档数量一旦达到一定数据量级,为了保证新插入的数据不重复,如果每次使用 update 操作感觉有点慢,倒不如一次性 insert 然后最后在使用 pipline 管道操作去重重复数据,感觉会快些,但是我没有测试过,有兴趣的童鞋可以做个测试比较一下。

MongoDB 数据情况

数据库存在重复数据,如下:

/* 1 */
{
    "_id" : ObjectId("5dbaf3939642fb9adcad453c"),
    "username" : "王五",
    "area" : "上海"
}

/* 2 */
{
    "_id" : ObjectId("5dbaf3a19642fb9adcad4549"),
    "username" : "赵四",
    "area" : "北京"
}

/* 3 */
{
    "_id" : ObjectId("5dbaf3b89642fb9adcad4556"),
    "username" : "马六",
    "area" : "北京"
}
/* 4 */
{
    "_id" : ObjectId("5dbaf3b89642fb9adcad4556"),
    "username" : "马六",
    "area" : "北京"
}

管道操作清洗重复数据

MongoDB Bash 命令

db.getCollection('users').aggregate([
    {
   
        $group: {
    _id: {
   username: '$username', username: '$area'},count: {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值