一、查重语句:
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 })
效果:
然后再检验一下是否全部将重复的数据删除了,就把第一步的语句重新运行一遍就知道了
无重复的数据,说明已经将重复的数据删除完毕!