简介

本文通过一个实例给大家用MySQL和mongodb分别写一个查询,本文图片并茂给大家介绍的非常详细,感兴趣的朋友参考下吧

首先在这里我就不说关系型数据库与非关系型数据库之间的区别了(百度上有很多)直接切入主题

我想查询的内容是这样的:分数大于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简单的查询实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

原文链接:http://www.cnblogs.com/moon1223/archive/2016/10/17/5969400.html

mysql mongo关联查询语句_MySQL与Mongo简单的查询实例代码 筋斗云网络相关推荐

  1. 怎么改mysql的搜索引擎_MySQL全文索引实现简单版搜索引擎实例代码

    前言 只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的) char.varchar.text类型字段能创建全文索引(fulltext index ...

  2. 小程序云开发数据库查询语句之doc与where||如何查询到不符合条件的结果

    小程序云开发数据库查询语句之doc与where||如何查询到不符合条件的结果 一只孤独的菜鸟 最近在云开发时遇到的查询语句, where和doc,在官方文档上是这样的 db.collection('t ...

  3. php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码

    <Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...

  4. php mysql简单留言本_php+mysql写的简单留言本实例代码

    php+mysql写的简单留言本实例代码 更新时间:2008年07月25日 09:41:32   作者: 方便新手学习php guestbook.php: COLOR: #002878; TEXT-D ...

  5. mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优

    作者:成金之路 www.cnblogs.com/uttu/p/6384541.html 本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级.千万 ...

  6. mysql 子表 关联查询语句_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 基本语法:SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * FR ...

  7. mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询

    1.查询一张表: select * from 表名: 2.查询指定字段:select 字段1,字段2,字段3-.from 表名: 3.where条件查询:select 字段1,字段2,字段3 from ...

  8. mysql多表查询语句_mysql查询语句 和 多表关联查询 以及 子查询

    1.查询一张表:select * from 表名: 2.查询指定字段:select 字段1,字段2,字段3-.from 表名: 3.where条件查询:select字段1,字段2,字段3 frome ...

  9. mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的

    前言 学习一个新知识最好的方式就是上官网,所以我先把官网贴出来 MySQL官网 (点击查阅),如果大家有想了解我没有说到的东西可以直接上官网看哈~目前 MySQL 最新大版本为8.0,但是鉴于目前应用 ...

最新文章

  1. 简明 Python 编程规范v2
  2. 圈子 | 苏宁易购产品经理:平台支撑型产品的思维方式
  3. python解析树_如何使用python中的stanford解析器获取树的叶子?
  4. web.xml 组件加载顺序
  5. [渝粤教育] 西南科技大学 高速公路 在线考试复习资料
  6. 计算机英语阅读路线,高考英语阅读理解真题解析·计算机运用
  7. OpenVINO InferenceEngine之CNNNet、CNNLayer、Blob介绍
  8. LIDAR in Google Earth
  9. SQL:postgresql中生成当前时间以及当前时间戳
  10. 2019中国互联网应用基本发展状况
  11. matlab信道编码程序,信道编码作业matlab.doc
  12. Thanos Query Frontend
  13. JPG/JEPG在十六进制文件格式
  14. 值得品读的感悟人生的经典句子 - 格言网(转载)
  15. zoom如何使用网页版登录
  16. c语言中tho什么意思,干货丨与老外聊天常用的英文缩写,速度get
  17. dom4j的一些总结
  18. PCB板布线经验~~
  19. gstreamer debug tracer使用概览
  20. Unity事件分发器

热门文章

  1. 不同安卓模拟器连接appium的端口
  2. css怎么使图片变暗些
  3. 家用数码相机选购及使用指南
  4. CDS (W2) -- Features, Data, Text Processing
  5. 单组学的多变量分析|1.PCA和PLS-DA
  6. eclipse里面运行tomcat显示无法显示页面
  7. linux ubuntu bionic,如何升级Ubuntu到18.04 LTS Bionic Beaver
  8. 斜杠 反斜杠  双斜杠 双反斜杠
  9. 计算机模拟仿真实例,计算机模拟仿真系统,computer simulation system,音标,读音,翻译,英文例句,英语词典...
  10. pyscripter支持python什么版本_pyscripter 64位下载-pyscripter x64下载2.5.3 官方最新版-Python集成开发环境IDE西西软件下载...