《詳解mysql & mongo aggregate》要點(diǎn):
本文介紹了詳解mysql & mongo aggregate,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
假如我們的APP CRASH數(shù)據(jù)是這樣的:
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 '手機(jī)型號(hào)', `app_version` varchar(255) DEFAULT NULL COMMENT 'APP版本', `osVersion` varchar(255) DEFAULT NULL COMMENT '操作系統(tǒng)版本', `app_channel` varchar(255) DEFAULT NULL COMMENT 'APP渠道號(hào)', `app_start_time` int(10) DEFAULT NULL COMMENT 'APP啟動(dòng)', `app_crash_time` int(10) DEFAULT NULL COMMENT 'CRASH發(fā)生時(shí)間', `crash_exception_type` varchar(255) DEFAULT NULL COMMENT 'crash類別', `crash_exception_desc` text COMMENT 'CRASH堆棧', `crash_callstack` text COMMENT '完整的錯(cuò)誤棧',
我們看個(gè)例子:
*************************** 1. row ***************************
我們用MYSQL來統(tǒng)計(jì):
統(tǒng)計(jì)設(shè)備TOP5
SELECT COUNT(*) as number,device_model FROM xmapp_crash
統(tǒng)計(jì)CRASH的48小時(shí)內(nèi)每小時(shí)的數(shù)據(jù)
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
統(tǒng)計(jì)一個(gè)月內(nèi)的數(shù)據(jù)
SELECT count(*) as number,DATE_FORMAT(FROM_UNIXTIME(app_crash_time), '%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
現(xiàn)在我們把數(shù)據(jù)導(dǎo)入到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);
數(shù)據(jù)查看一下:
db.app_crash.findOne()
我們來做統(tǒng)計(jì):
統(tǒng)計(jì)設(shè)備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) },
db.crash.group({ key: {device_model: 1},
統(tǒng)計(jì)CRASH的時(shí)間曲線,48小時(shí)內(nèi)每小時(shí)
db.crash.mapReduce( function() {
統(tǒng)計(jì)一個(gè)月內(nèi),機(jī)型CRASH的分布
db.crash.mapReduce( function() {
微信公眾賬號(hào):myersguo
(完)
《詳解mysql & mongo aggregate》是否對(duì)您有啟發(fā),歡迎查看更多與《詳解mysql & mongo aggregate》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/7679.html