MySQL与Mongo简单的查询实例代码
首先在这里我就不说关系型数据库与非关系型数据库之间的区别了(百度上有很多)直接切入主题
我想查询的内容是这样的:分数大于0且人名是bob或是jake的总分数 平均分数 最小分数 最大分数 计数
举这个实例来试试用MySQL和mongodb分别写一个查询
首先我们先做一些准备工作
MySQL的数据库结构如下
CREATE TABLE `new_schema`.`demo` ( `id` INT NOT NULL, `person` VARCHAR(45) NOT NULL, `score` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`));
建完表之后我们来插入一些数据
INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('1', 'bob', '50'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('2', 'jake', '60'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('3', 'bob', '100'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('6', 'jake', '100'); INSERT INTO `new_schema`.`demo` (`id`, `person`, `score`) VALUES ('8', 'li', '100');
我截个图方便看一下结构
好 接下来我们进入mongodb的准备工作 看一下建立的mongodb的集合里面文档的结构(基本跟MySQL一毛一样)在这里我就不写插入文档的具体过程了 (为了便看mongodb的显示我都用两种格式显示:一个是表哥模块显示 一个是文本模块显示)
这个是表格模块显示
这个是文本模块显示
/* 1 */ { "_id" : ObjectId("58043fa8e9a7804c05031e17"), "person" : "bob", "sorce" : 50 } /* 2 */ { "_id" : ObjectId("58043fa8e9a7804c05031e18"), "person" : "bob", "sorce" : 100 } /* 3 */ { "_id" : ObjectId("58043fa8e9a7804c05031e19"), "person" : "jake", "sorce" : 60 } /* 4 */ { "_id" : ObjectId("58043fa8e9a7804c05031e1a"), "person" : "jake", "sorce" : 100 } /* 5 */ { "_id" : ObjectId("58043fa8e9a7804c05031e1b"), "person" : "li", "sorce" : 100 }
开始进入正题
现在我想查的MySQL语句是这样的(分数大于0且人名是bob或是jake的总分数 平均分数 最小分数 最大分数 计数)
SELECT person, SUM(score), AVG(score), MIN(score), MAX(score), COUNT(*) FROM demo WHERE score > 0 AND person IN('bob','jake') GROUP BY person;
下面开始用Mongo写出这个查询
首先想到的是聚合框架
先用$match过滤 分数大于0且人名是bob或是jake
db.demo.aggregate( { "$match":{ "$and":[ {"sorce":{"$gt":0}}, {"person":{"$in":["bob","jake"]}} ] } }
得到这个结果
这个是表哥模块显示的结果:
这个是文本模块显示的结果:
/* 1 */ { "_id" : ObjectId("58043fa8e9a7804c05031e17"), "person" : "bob", "sorce" : 50 } /* 2 */ { "_id" : ObjectId("58043fa8e9a7804c05031e18"), "person" : "bob", "sorce" : 100 } /* 3 */ { "_id" : ObjectId("58043fa8e9a7804c05031e19"), "person" : "jake", "sorce" : 60 } /* 4 */ { "_id" : ObjectId("58043fa8e9a7804c05031e1a"), "person" : "jake", "sorce" : 100 }
然后想要分组并且显示最大 最小 总计 平均值 和计数值
那么$group派上用场了:
db.demo.aggregate( { "$match":{ "$and":[ {"sorce":{"$gt":0}}, {"person":{"$in":["bob","jake"]}} ] } }, { "$group":{"_id":"$person", "sumSorce":{"$sum":"$sorce"}, "avgSorce":{"$avg":"$sorce"}, "lowsetSorce":{"$min":"$sorce"}, "highestSorce":{"$max":"$sorce"}, "count":{"$sum":1}} } )
得到的结果就是 分数大于0且人名是bob或是jake的总分数 平均分数 最小分数 最大分数 计数
结果的表格模块显示:
结果的文本模块显示:
/* 1 */ { "_id" : "bob", "sumSorce" : 150, "avgSorce" : 75.0, "lowsetSorce" : 50, "highestSorce" : 100, "count" : 2.0 } /* 2 */ { "_id" : "jake", "sumSorce" : 160, "avgSorce" : 80.0, "lowsetSorce" : 60, "highestSorce" : 100, "count" : 2.0 }
以上所述是小编给大家介绍的MySQL与Mongo简单的查询实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
- 这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
- 这篇文章主要为大家详细介绍了linux下源码安装mysql5.6.20教程的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-15
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
这篇文章主要介绍了通过node-mysql搭建Windows+Node.js+MySQL环境的教程,node-mysql是JavaScript编写的一个Node的MySQL驱动,需要的朋友可以参考下...2016-03-03- 本篇文章主要介绍了Mac下安装mysql5.7 完整步骤,具有一定的参考价值,有兴趣的可以了解一下,...2017-01-26
- 这篇文章主要为大家详细介绍了Linux CentOS MySQL数据库的安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-05-19
- 如果我们使用Xampp服务器自带数据库mysql,就必须先修改mysql的密码,下面小编给大家分享如何修改Xampp服务器上的mysql密码,需要的朋友参考下吧...2017-04-26
- 这篇文章主要为大家分享了win7下MySql 5.7安装配置方法图文教程,感兴趣的小伙伴们可以参考一下...2016-05-20
- 这篇文章主要介绍了在windows10上安装mysql详细图文教程,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧...2016-09-18
- 今天工作中需要对一台ubantu的系统安装mysql,因为以前一直使用的是centos,虽然它也是类unix但是和redhat或centos命令上还是有点差别。所以通过网上查阅资料,终于安装成功了,现在将步骤分享给大家,有需要的朋友们可以参考借鉴。...2016-10-20
- 这篇文章主要为大家详细介绍了linux上mysql安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-02-08
centos 6.5下 mysql-community-server. 5.7.18-1.el6安装
这篇文章主要介绍了centos 6.5下 mysql-community-server. 5.7.18-1.el6安装,需要的朋友可以参考下...2017-05-09Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB
本文主要介绍解决Hibernate4在MySQL5.1自动创建表出错的方法,简单实用,需要的朋友可以参考下。...2016-06-12- 应一个朋友要求写了这个批处理程序,主要用途就是在win32系统中方便停止、开启、重启IIS、MySQL服务。 ...2016-01-27
- 这篇文章主要介绍了MAC版修改MySQL初始密码的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-02-08
- 这篇文章主要介绍了jQuery+PHP+MySQL实现无限级联效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-02-21
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
这篇文章主要介绍了thinkphp3.x连接mysql数据库的方法,详细分析了thinkPHP3.x操作数据库的具体步骤,包括惯例配置文件设置,sql语句创建表以及针对数据库的数据插入操作等,需要的朋友可以参考下...2016-05-20- 这篇文章主要介绍了Centos下 修改mysql密码的方法,需要的朋友可以参考下...2017-03-14
IIS 环境下配置PHP5+MySql+PHPMyAdmin
虽然主要是做.net开发的,但是,时不时的还要搞一下php,但是,php在windows下的配置,总是走很多弯路,正好前几天又配置了一下,因此总结在这里,做为自己的备忘,也希望给遇到问题的朋友们提供一些帮助。...2016-01-27个人网站留言页面(前端jQuery编写、后台php读写MySQL)
这篇文章主要为大家介绍了个人网站的留言页面,前端使用jQuery编写、后台利用php简单读写MySQL数据库,感兴趣的小伙伴们可以参考一下...2016-05-05- 这篇文章主要介绍了PHP数据库连接mysql与mysqli对比分析,以及php中mysqli用法举例,感兴趣的小伙伴们可以参考一下...2016-01-07