原文链接

(18条消息) MongoDB百万级数据去重_不会编程的小猿的博客-CSDN博客

查询重复项

原集合

mongo查询语句

// 集合名称
db.result_msgv1_copy1.aggregate([
	{
			//重复字段
			$group:{_id:{send_date: "$send_date", GliderID_Irid: "$GliderID_Irid"},count:{$sum:1}}
	},
	{
			$match:{count:{$gt:1}}
	}
],{allowDiskUse:true})

运行结果

删除重复项

mongo去重语句

// 集合名称
db.result_msgv1_copy1.aggregate([
	{
			//重复字段,send_date + GliderID_Irid 都重复
      $group:{_id: {send_date: "$send_date", GliderID_Irid: "$GliderID_Irid"},count:{$sum:1},dups:{$addToSet:'$_id'}}//若重复则把_id加入dups数组
	},
	{
      $match: {count: {$gt: 1}}
  }

],{allowDiskUse: true}).forEach( //循环删除_id对应的数据
    function(doc){ 
        doc.dups.shift(); 
				//集合名称
        db.result_msgv1_copy1.remove(
            {
                _id: {
                    $in: doc.dups
                }
            }
        ); 
    }
)

运行结果

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐