社区
MongoDB
帖子详情
mongodb aggregate group如何使用T-SQL的group by key1,key2 ?
BeerGates
2017-07-12 05:42:00
mongodb aggregate group如何使用T-SQL的group by key1,key2 ?
现在只可以
{"$group":{"_id":"$key1"....}
求指点
...全文
123
2
打赏
收藏
mongodb aggregate group如何使用T-SQL的group by key1,key2 ?
mongodb aggregate group如何使用T-SQL的group by key1,key2 ? 现在只可以 {"$group":{"_id":"$key1"....} 求指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BeerGates
2017-07-14
打赏
举报
回复
顶起,有一个很重要的统计,但TSQL可以,MONGODB不知道如何搞了……
BeerGates
2017-07-14
打赏
举报
回复
已经解决
http://bbs.csdn.net/topics/392192609
轻量级JAVA实时业务风控系统框架.zip
背景 当前互联网企业存在很多业务风险,有些风险(比如薅羊毛)虽然没有
sql
注入漏洞利用来的直接,但是一直被羊毛党、刷单党光顾的企业长期生存下来的几率会很低! 账号:垃圾注册、撞库、盗号等 交易:盗刷、恶意占用资源、篡改交易金额等 活动:薅羊毛 短信:短信轰炸 项目介绍 实时业务风控系统是分析风险事件,根据场景动态调整规则,实现自动精准预警风险的系统。 本项目只提供实时风控系统框架基础和代码模板。 需要解决的问题 哪些是风险事件,注册、登录、交易、活动等事件,需要业务埋点配合提供实时数据接入 什么样的事件是有风险的,风险分析需要用到统计学,对异常用户的历史数据做统计分析,找出异于正常用户的特征 实时性,风险事件的分析必须毫秒级响应,有些场景下需要尽快拦截,能够给用户止损挽回损失 低误报,这需要人工风控经验,对各种场景风险阈值和评分的设置,需要长期不断的调整,所以灵活的规则引擎是很重要的 支持对历史数据的回溯,能够发现以前的风险,或许能够找到一些特征供参考 项目关键字 轻量级,可扩展,实时的Java业务风控系统 基于Spring boot构建,配置文件能少则少
使用
drools规则引擎管理风控规则,原则上可以动态配置规则
使用
redis、
mongodb
做风控计算和事件储存,历史事件支持水平扩展 原理 统计学 次数统计,比如1分钟内某账号的登录次数,可以用来分析盗号等 频数统计,比如1小时内某ip上出现的账号,可以用来分析黄牛党等 最大统计,比如用户交易金额比历史交易都大,可能有风险 最近统计,比如最近一次交易才过数秒,可能机器下单 行为习惯,比如用户常用登录地址,用户经常登录时间段,可以用来分析盗号等 抽象:某时间段,在条件维度(可以是多个维度复合)下,利用统计方法统计结果维度的值。充分发挥你的想象吧! 实时计算 要将任意维度的历史数据(可能半年或更久)实时统计出结果,需要将数据提前安装特殊结果准备好(由于事件的维度数量不固定的,选取统计的维度也是随意的,所以不是在关系数据库中建几个索引就能搞定的),需要利用空间换时间,来降低时间复杂度。 redis redis中数据结构sortedset,是个有序的集合,集合中只会出现最新的唯一的值。利用sortedset的天然优势,做频数统计非常有利。 比如1小时内某ip上出现的账号数量统计: 保存维度 ZADD
key
score member(时间复杂度:O(M*log(N)), N 是有序集的基数, M 为成功添加的新成员的数量),
key
=ip,score=时间(比如20160807121314),member=账号。存储时略耗性能。 结构如下: 1.1.1.1 |--账号1 20160807121314 |--账号2 20160807121315 |--账号n 20160807121316 2.2.2.2 |--账号3 20160807121314 |--账号4 20160807121315 |--账号m 20160807121316 计算频数 ZCOUNT
key
min max(时间复杂度:O(1)),
key
=ip,min=起始时间,max=截止时间。计算的性能消耗极少,优势明显 redis lua 把保存维度,计算频数,过期维度数据等操作,
使用
lua脚本结合在一起,可以减少网络IO,提高性能
mongodb
mongodb
本身的聚合函数统计维度,支持很多比如:max,min,sum,avg,first,last,标准差,采样标准差,复杂的统计方法可以在基础聚合函数上建立,比如行为习惯: getDB().getCollection(collectionName).
aggregate
( Arrays.asList( match(match) --匹配条件维度 ,
group
("$" + field, Accumulators.sum("_count", 1)) --求值维度的次数 , match(new Document("_count", new Document("$gte", minCount))) --过滤,超过minCount才统计 , sort(new Document("_count", -1)) --对次数进行倒叙排列 ) ); 建议在
mongodb
聚合的维度上建立索引,这样可以
使用
内存计算,速度较快。 redis性能优于mo
MongoDB
从入门到实战(七):
MongoDB
聚合
aggregate
// 分组: //
key
: 要分组的字段, // initial:值的初始化, // condition:是筛选条件, // $reduce:将满足的条件的所有文档都会执行该函数, // finalize:每组函数执行完之后的操作,可以做一些统计什么的 > db.users.
group
({ "
key
": {"age": true}, "initial": {"user": []}, "$reduce": function(cur, prev){ prev.user.pu
Springdata-
mongodb
的基本
使用
文章目录一、 SpringData介绍二、 SpringData操作
MongoDB
的两种方式及实战1. MongoTemplate1.1
Mongodb
Driver Api操作
MongoDB
1.1.2 基本CRUD1.1.3 连接选项1.2 MongoTemplate的基本CRUD1.3 MongoTemplate的聚合查询1.3.1
Aggregate
1.3.2 MapReduce1.3.3 聚合操作和MapReduce对比1.3.4
Group
操作1.3.5 Bucket聚合2. MongoRepos
MongoDB
数据库
Group
By查询
使用
Spring-data-mongondb的实现
以前用
MongoDB
数据库都是简单的查询,直接用Query就可以,最近项目中用到了分组查询,完全不一样。第一次遇到,搞了好几天终于有点那意思了。 先上代码: 1 import java.math.BigDecimal; 2 import java.text.ParseException; 3 import java.text.SimpleDateFormat;...
MongoDB
数据库----聚合
目录 一、Map Reduce 1、MapReduce命令 二、聚合 1、
aggregate
()方法 2、实例 3、聚合表达式 4、管道的概念 5、管道操作符实例 一、Map Reduce Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。
MongoDB
提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。 1、MapReduce命令 基本语法 db.collection.map.
MongoDB
1,747
社区成员
1,464
社区内容
发帖
与我相关
我的任务
MongoDB
MongoDB相关内容讨论区
复制链接
扫一扫
分享
社区描述
MongoDB相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章