在Navicat Premium里给MongoDB数据库的集合去掉重复的数据
一、查重语句:
1 db.data.aggregate([ 2 { 3 $group: { _id: {ip: '$ip',time: '$time',day:'$day',traffic:'$traffic',type:'$type',id:'$id'},count: {$sum: 1},dups: {$addToSet: '$_id'}} 4 }, 5 { 6 $match: {count: {$gt: 1}} 7 } 8 ])
可以发现里面有重复的数据:(上面的db.data.aggregate中的data为需要查重的集合)
二、查重后对重复的数据进行删除操作
语句:
1 db.data.aggregate([ 2 { 3 $group: { _id: {ip: '$ip',time: '$time',day:'$day',traffic:'$traffic',type:'$type',id:'$id'},count: {$sum: 1},dups: {$addToSet: '$_id'}} 4 }, 5 { 6 $match: {count: {$gt: 1}} 7 } 8 ]).forEach(function(doc){ 9 doc.dups.shift(); 10 db.data.remove({_id: {$in: doc.dups}}); 11 })
效果:
然后再检验一下是否全部将重复的数据删除了,就把第一步的语句重新运行一遍就知道了
无重复的数据,说明已经将重复的数据删除完毕!