tft每日頭條

 > 科技

 > mongodb常用語法和mysql差不多嗎

mongodb常用語法和mysql差不多嗎

科技 更新时间:2025-01-16 07:01:18

mongodb常用語法和mysql差不多嗎?假如我們的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 '完整的錯誤棧',,我來為大家講解一下關于mongodb常用語法和mysql差不多嗎?跟着小編一起來看一看吧!

mongodb常用語法和mysql差不多嗎(詳解mysql)1

mongodb常用語法和mysql差不多嗎

假如我們的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,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

現在我們把數據導入到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

(完)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved