当前位置: 首页 > news >正文

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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

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删除

// addToSet返回包含_id

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
		}
	});
})

 

转载于:https://my.oschina.net/u/914655/blog/2961642

相关文章:

  • linux使用操作的常用命令
  • python - unitest - 实战题目
  • Linux磁盘空间占满问题快速定位
  • 4个顶级开源JavaScript图表库
  • JAVA入门到精通-第58讲-SQLserver数据类型
  • spring cloud构建java版 b2b2c o2o电子商务云商平台
  • 单表千亿电信大数据场景,使用Spark+CarbonData替换Impala案例
  • How to remove unwant Explorer Context Menu
  • 卷积网络实战---复现已有的卷积神经网路
  • in typeof instanceof ===这些运算符有什么作用
  • mysql_config not found
  • 情绪与神经
  • 初识docker之如何运行一个容器
  • 20181203-join核心模块方法 + events核心模块发布订阅模式 + fs读写文件流
  • AWS实战 - 利用IAM对S3做访问控制
  • 分享一款快速APP功能测试工具
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [译]如何构建服务器端web组件,为何要构建?
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Apache的80端口被占用以及访问时报错403
  • const let
  • Consul Config 使用Git做版本控制的实现
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6系统学习----从Apollo Client看解构赋值
  • github指令
  • HashMap ConcurrentHashMap
  • Map集合、散列表、红黑树介绍
  • oschina
  • QQ浏览器x5内核的兼容性问题
  • Swoft 源码剖析 - 代码自动更新机制
  • Wamp集成环境 添加PHP的新版本
  • 服务器从安装到部署全过程(二)
  • 浮动相关
  • 给github项目添加CI badge
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 软件开发学习的5大技巧,你知道吗?
  • 山寨一个 Promise
  • 学习笔记TF060:图像语音结合,看图说话
  • 优化 Vue 项目编译文件大小
  • postgresql行列转换函数
  • 阿里云ACE认证之理解CDN技术
  • 阿里云重庆大学大数据训练营落地分享
  • 国内开源镜像站点
  • ​业务双活的数据切换思路设计(下)
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • $NOIp2018$劝退记
  • (11)MSP430F5529 定时器B
  • (9)目标检测_SSD的原理
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (三) prometheus + grafana + alertmanager 配置Redis监控