gpt4 book ai didi

MySQL与Mongo简单的查询实例代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章MySQL与Mongo简单的查询实例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

我想查询的内容是这样的:分数大于0且人名是bob或是jake的总分数 平均分数 最小分数 最大分数 计数 。

举这个实例来试试用MySQL和mongodb分别写一个查询 。

首先我们先做一些准备工作 。

MySQL的数据库结构如下 。

?
1
2
3
4
5
CREATE TABLE `new_schema`.`demo` (
`id` INT NOT NULL ,
`person` VARCHAR (45) NOT NULL ,
`score` VARCHAR (45) NOT NULL ,
PRIMARY KEY (`id`));

建完表之后我们来插入一些数据 。

?
1
2
3
4
5
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' );

我截个图方便看一下结构 。

MySQL与Mongo简单的查询实例代码

好 接下来我们进入mongodb的准备工作 看一下建立的mongodb的集合里面文档的结构(基本跟MySQL一毛一样)在这里我就不写插入文档的具体过程了 (为了便看mongodb的显示我都用两种格式显示:一个是表哥模块显示 一个是文本模块显示) 。

  这个是表格模块显示 。

MySQL与Mongo简单的查询实例代码

  这个是文本模块显示 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* 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的总分数 平均分数 最小分数 最大分数 计数) 。

?
1
2
3
4
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 。

?
1
2
3
4
5
6
7
8
9
db.demo.aggregate(
{
"$match" :{
"$and" :[
{ "sorce" :{ "$gt" :0}},
{ "person" :{ "$in" :[ "bob" , "jake" ]}}
]
}
}

得到这个结果 。

  这个是表哥模块显示的结果:

MySQL与Mongo简单的查询实例代码

  这个是文本模块显示的结果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* 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派上用场了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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的总分数 平均分数 最小分数 最大分数 计数 。

  结果的表格模块显示:

MySQL与Mongo简单的查询实例代码

  结果的文本模块显示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 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简单的查询实例代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com