您的位置:首页 > 文旅 > 旅游 > 中铁建设集团有限公司招聘信息_中铁建设集团有限公司西南分公司_深圳博惠seo_宁波 seo整体优化

中铁建设集团有限公司招聘信息_中铁建设集团有限公司西南分公司_深圳博惠seo_宁波 seo整体优化

2024/12/27 20:50:30 来源:https://blog.csdn.net/2201_75539359/article/details/144207269  浏览:    关键词:中铁建设集团有限公司招聘信息_中铁建设集团有限公司西南分公司_深圳博惠seo_宁波 seo整体优化
中铁建设集团有限公司招聘信息_中铁建设集团有限公司西南分公司_深圳博惠seo_宁波 seo整体优化

往期文章:

​​​​​​【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客

【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)-CSDN博客

目录

一、MongoDB文档查询原理

1、使用 find() 方法进行文档基本查询

2、文档查询条件的使用

3、特定类型查询

4、聚合查询

二、 MongoDB文档查询操作

1、创建集合

2、插入文档数据

3、查询文档数据

4、统计文档数据

5、简单条件查询

6、多条件查询

7、or条件查询

8、AND 和 OR 联合查询

9、使用聚合aggregate进行查询

10、管道使用

三、学习笔记


一、MongoDB文档查询原理

1、使用 find() 方法进行文档基本查询

        语法格式如下:db.collection.find(query,projection)

        参数说明:

        query :可选,使用查询操作符指定查询条件

        projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

2、文档查询条件的使用

操作

格式

范例

RDBMS中的类似语句

等于

{<key>:<value>}

db.col.find({"by":"x"}).pretty()

where by = 'x'

小于

{<key>:{$lt:<value>}}

db.col.find({"likes":{$lt:50}}).pretty()

where likes < 50

小于或等于

{<key>:{$lte:<value>}}

db.col.find({"likes":{$lte:50}}).pretty()

where likes <= 50

大于

{<key>:{$gt:<value>}}

db.col.find({"likes":{$gt:50}}).pretty()

where likes > 50

大于或等于

{<key>:{$gte:<value>}}

db.col.find({"likes":{$gte:50}}).pretty()

where likes >= 50

不等于

{<key>:{$ne:<value>}}

db.col.find({"likes":{$ne:50}}).pretty()

where likes != 50

3、特定类型查询

        针对特定类型的文档进行查询,如查询键为NULL的空文档

4、聚合查询

        MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。db.collection.aggregate()是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。

表达式

描述

实例

$sum

计算总和。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])

$avg

计算平均值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])

$min

获取集合中所有文档对应值得最小值。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])

$max

获取集合中所有文档对应值得最大值。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

$push

在结果文档中插入值到一个数组中。

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])

$addToSet

在结果文档中插入值到一个数组中,但不创建副本。

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])

$first

根据资源文档的排序获取第一个文档数据。

db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])

$last

根据资源文档的排序获取最后一个文档数据

db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

二、 MongoDB文档查询操作

1、创建集合

使用test数据库,并创建items集合,mongodb语句如下所示:

Use test

Db.creatCollection("items")

2、插入文档数据

一共有八个订单的商品信息,如下所示:

db.items.insert([

{"quantity":2,price:5.0,pnumber:"p003"},

{"quantity":2,price:8.0,pnumber:"p002"},

{"quantity":1,price:4.0,pnumber:"p002"},

{"quantity":2,price:4.0,pnumber:"p001"},

{"quantity":4,price:10.0,pnumber:"p003"},

{"quantity":10,price:20.0,pnumber:"p001"},

{"quantity":10,price:20.0,pnumber:"p003"},

{"quantity":5,price:10.0,pnumber:"p002"}

])

3、查询文档数据

查询刚才插入的数据,查询语句如下所示,其中pretty()可以格式化显示查询结果:

db.items.find().pretty()

4、统计文档数据

统计items的文档数据,使用如下语句:

db.items.count()

5、简单条件查询

查询价格大于5的商品数据,如下所示:

db.items.find({price:{$gt:5}})

6、多条件查询

查询quantity为10且价格大于等于5的商品数据,查询语句如下所示:

db.items.find({quantity:10,price:{$gte:5}})

7、or条件查询

查询quantity为10或价格大于等于5的商品数据,查询语句如下所示,比起上一题的多条件查询有结构上的区别:

db.items.find({$or:[{quantity:10},{price:{$gte:5}}]})

8、AND 和 OR 联合查询

查询pnumber为“p003”且quantity为10或价格大于等于5的商品数据,如下所示:

db.items.find({pnumber:"p003",$or:[{quantity:10},{price:{$gte:5}}]})

9、使用聚合aggregate进行查询

(1)统计订单中所有商品的数量,即统计quantity的总和,使用$group和$sum,如下所示:

db.items.aggregate([{$group:{_id:null,total:{$sum:"$quantity"}}}])

(2)通过产品类型来进行分组,然后在统计卖出的数量,如下所示:

db.items.aggregate([{$group:{_id:"$pnumber",total:{$sum:"$quantity"}}}])

(3)通过相同的产品类型来进行分组,然后查询相同产品类型卖出最多的订单详情,如下所示:

db.items.aggregate([{$group:{_id:"$pnumber",max:{$max:"$quantity"}}}])

(4)通过相同的产品类型来进行分组,然后查询每个订单详情相同产品类型卖出的平均价格,这里用到$avg如下所示:

db.items.aggregate([{$group:{_id:"$pnumber",price:{$avg:"$price"}}}])

10、管道使用

通过相同的产品类型来进行分组,统计各个产品数量,然后获取最大的数量。这里用到两个$group,第一个是筛选相同的产品类型并统计产品数量,第二个是找到最大的产品数量,如下所示:

db.items.aggregate([{$group:{_id:"$pnumber",total:{$sum:"$quantity"}}},{$group:{_id:null,max:{$max:"$total"}}}])

三、学习笔记

         MongoDB数据库的文档查询操作涉及到文档查询需要用到的一些查询表达式,比如$sum用于计算总和、$avg用于计算平均值,$max和$min分别用于获取最大值和最小值,还有关于比较的表达式,如$lt代表小于,$lte代表小于等于,$gt代表大于,$gte代表大于等于,$ne代表不等于,以及查询条件表达式,比如$or。

        db.collection.find()用于普通查询,聚合查询使用db.collection.aggregate(),$group拿来按照特定条件分组查询统计。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com