mongoDB及mysql的去重语句

最近使用mongoDB用到数据去重,自己学习了一下,记录下结果。

1.mongoDB可视化工具:

 

 使用mongoDB的可视化工具robo 3T,选择需要去重的表,例如:

 去重语句如下:

//后的内容为注解,使用时删除

db.getCollection('soft_patent').aggregate(
    {
    $group:{
        '_id':'$id',
                    //'_id'作为标识,任意取,但是推荐和表字段对应,便于比较。
                    //'$id'代表需要去重的字段
        'uniqueIds':{'$addToSet': '$_id'},
                    //代表主键,后面重复词条就是根据唯一主键删除,
                    //uniqueIds是标识
        'count':{'$sum':1}
                    //按照$id进行group分组,获得相应的数量$sum
        }
    },
    {
        $match:{'count':{'$gt':1}}
                    //匹配count,数量>1的都要删除去重   
   }
    ).forEach(function(doc){
        //遍历
           doc.uniqueIds.shift();
           //根据主键删除
           db.getCollection('soft_patent').remove({_id:{$in:doc.uniqueIds}})
                //soft_patent表名
        })

 前半句也可用于判断是否有重复

db.getCollection('soft_patent').aggregate(
    {
    $group:{
        '_id':'$id',
                    
        'uniqueIds':{'$addToSet': '$_id'},
                    
        'count':{'$sum':1}
                    
        }
    },
    {
        $match:{'count':{'$gt':1}}
                    
   })

 

2.mysql去重:

比较简单,直接写语句

SELECT COUNT(*) FROM `codig_rel.soft_patent` GROUP BY id

DELETE
FROM
    `codig_rel.soft_patent`
WHERE
    id IN (
        (SELECT * FROM (SELECT
            id
        FROM
            `codig_rel.soft_patent`
        GROUP BY
            id
        HAVING
            COUNT(id) > 1) a)
    )

 

ps:在工作中,对于表数据的处理之前,一定要记得备份,避免重大损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值