mongodb分组统计,而且删除重复数据

// 找出按pipe_id过滤重复的数据展现出来,第一个match是查询条件,$group是分组条件,后一个match是count>1的才展现出来,allowDiskUse:true容许到硬盘操做,不然内存不够bash

db.flow_data.aggregate([{
	$match: {
		'pipe_id': '17087582-f12b-11e8-893a-0242ac11001c'
	}
},
{
	$group: {
		_id: {
			pipe_id: '$pipe_id',
			time: '$time'
		},
		count: {
			$sum: 1
		},
		dups: {
			$addToSet: '$_id'
		}
	}
},
{
	$match: {
		count: {
			$gt: 1
		}
	}
}], {
	allowDiskUse: true
})

 

// 找出按pipe_id+time过滤重复的数据删除掉, doc.dups.shift()后移一位,后面按id删除code

// addToSet返回包含_idip

db.flow_data.aggregate([{
	$match: {
		'pipe_id': '17087582-f12b-11e8-893a-0242ac11001c'
	}
},
{
	$group: {
		_id: {
			pipe_id: '$pipe_id',
			time: '$time'
		},
		count: {
			$sum: 1
		},
		dups: {
			$addToSet: '$_id'
		}
	}
},
{
	$match: {
		count: {
			$gt: 1
		}
	}
}], {
	allowDiskUse: true
}).forEach(function(doc) {
	doc.dups.shift();
	db.flow_data.remove({
		_id: {
			$in: doc.dups
		}
	});
})
相关文章
相关标签/搜索