详解mysql & mongo aggregate

详解mysql & mongo aggregate,第1张

概述介绍《详解mysql & mongo aggregate》开发教程,希望对您有用。

《详解MysqL & mongo aggregate》要点:
本文介绍了详解MysqL & mongo aggregate,希望对您有用。如果有疑问,可以联系我们。

假如我们的APP CRASH数据是这样的:

Create table: CREATE table `t_crash` ( `crash_ID` int(10) NOT NulL auto_INCREMENT COMMENT 'CRASH ID',`app_ID` varchar(255) NOT NulL COMMENT 'APP ID',`app_key` varchar(255) NOT NulL COMMENT 'APP KEY',`device_uuID` varchar(255) DEFAulT NulL COMMENT 'DEVICE UUID',`device_model` varchar(255) DEFAulT NulL COMMENT '手机型号',`app_version` varchar(255) DEFAulT NulL COMMENT 'APP版本',`osversion` varchar(255) DEFAulT NulL COMMENT ' *** 作系统版本',`app_channel` varchar(255) DEFAulT NulL COMMENT 'APP渠道号',`app_start_time` int(10) DEFAulT NulL COMMENT 'APP启动',`app_crash_time` int(10) DEFAulT NulL COMMENT 'CRASH发生时间',`crash_exception_type` varchar(255) DEFAulT NulL COMMENT 'crash类别',`crash_exception_desc` text COMMENT 'CRASH堆栈',`crash_callstack` text COMMENT '完整的错误栈',

我们看个例子:

*************************** 1. row ***************************

我们用MysqL来统计:

统计设备top5

SELECT COUNT(*) as number,device_model FROM xmapp_crash

统计CRASH的48小时内每小时的数据

SELECT count(*) as number,DATE_FORMAT(FROM_UNIXTIME(app_crash_time),'%Y-%m-%d %H') as tFROM xmapp_crashWHERE app_crash_time>UNIX_TIMESTAMP()-3600*48GROUP BY DATE_FORMAT(FROM_UNIXTIME(app_crash_time),'%Y-%m-%d %H')ORDER BY t desc

统计一个月内的数据

SELECT count(*) as number,'%Y-%m-%d') as tFROM xmapp_crashWHERE app_crash_time>UNIX_TIMESTAMP()-3600*24*30GROUP BY DATE_FORMAT(FROM_UNIXTIME(app_crash_time),'%Y-%m-%d')ORDER BY t desc

现在我们把数据导入到mongo:

<?PHP$connectionString = 'MysqL:host=localhost;port=3306;dbname=mydb';$username='root';$password='root';$db = new PDO($connectionString,$username,$password);$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$sql = 'SELECT * FROM t_crash';$statement=$db->prepare($sql);$statement->execute();$results=$statement->fetchAll(PDO::FETCH_ASSOC);$m = new MongoClIEnt("mongodb://localhost:27017");$m_db = $m->test;foreach($results as $key=>$result) { $m_db->app_crash->insert($result);

数据查看一下:

db.app_crash.findOne()

我们来做统计:

统计设备top5

db.crash.aggregate( [ { $group: { _ID: "$device_model",number: { $sum: 1} } },{ $sort: {"number": -1 }} ])

使用mapreduce

db.crash.mapReduce( function() { emit( this.app_version,1) },function(key,values) { return Array.sum(values) },
如果使用单独的group功能
db.crash.group({ key: {device_model: 1},

统计CRASH的时间曲线,48小时内每小时

db.crash.mapReduce( function() {

统计一个月内,机型CRASH的分布

db.crash.mapReduce( function() {

微信公众账号:myersguo

(完)

《详解MysqL & mongo aggregate》是否对您有启发,欢迎查看更多与《详解MysqL & mongo aggregate》相关教程,学精学透。内存溢出PHP学院为您提供精彩教程。

总结

以上是内存溢出为你收集整理的详解mysql & mongo aggregate全部内容,希望文章能够帮你解决详解mysql & mongo aggregate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1157050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存