【DBA课程-笔记】第2章:MongoDB数据数据查询与分析

这篇具有很好参考价值的文章主要介绍了【DBA课程-笔记】第2章:MongoDB数据数据查询与分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、课程大纲 

二、MongoDB 条件查询

1. 制造 MongoDB 测试数据

2. MongoDB 数据查询 与 SQL对应关系

3. MongoDB 查询运算符

4. MongoDB 数据查询、条件查询、过滤

5. MongoDB 条件查询命令

6. MongoDB 数据查询数组条件

A. 精确匹配数组元素:

B. 无顺序 and 精确 匹配

C. 至少匹配一个 

D. 组合条件满足一个条件过滤

E. $elemMatch操作符查询内嵌文档

F. 正则:模糊查询:/.* .*/

G. 正则:以xx开头:/^ .*/ 

H. 正则:以xx结尾:/.* $/

7. MongoDB 数据查询嵌套数组文档

A. 文档嵌套:单条件查询

B. 文档嵌套:多条件查询(and)

三、映射Project 与 过滤

四、去除重复 Distinct

五、聚合分组统计 Group By

A.  三种方式

B:聚合函数 ( 了解即可 )

 注意:4.2.1中已经不支持 group( db.users.help() 查询没有group函数 )

1. 分组统计不同年龄段的用户

2. 分组统计不同用户的订单总额

C:聚合管道

D:MapReduce (非常适用于大数据分析,如基于java的hadoop)

一、课程大纲 

  • MongoDB 条件查询
  • 映射 Project 与 过滤
  • 去除重复 Distinct
  • 分组统计 Group

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

二、MongoDB 条件查询

1. 制造 MongoDB 测试数据

db.users.insert({name:'frank',age:16,city:'beijing' )
db.users.insert({name:'xulei',age:17,city:'hangzhou' )
db.users.insert(name:'frankxulei'age:18,city:'shanghai')
db.users.insert({name:'alibaba',age: 25,tags:['java','mysql','mongodb'],city:'hangzhou'})
db.users.save()
db.users.insertOne()
db.users.insertMany()

2. MongoDB 数据查询 与 SQL对应关系

MongoDB SQL语句 说明
find() all
find({}) all
find({fage:18}) select * from users where age =18
$lt:18 where age<18 less rhan
$gt:18 where age>18 greater than
$lte:18 where age<=18 less rhan or equal
$gte=:18 where age>=18 greater than or equal
$in:[18,19] where age in(18,19)
$or:[{age:18}, { name:' frankxulei'}] where age=18 or name= 'frankxuleil'
{age:18,name:'frankxulei'} where age = 18 and name= 'frankxulei'
({“name”:/.*阿里.*/}) select * from users where name like “%阿里%”

3. MongoDB 查询运算符

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

4. MongoDB 数据查询、条件查询、过滤

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

5. MongoDB 条件查询命令

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

6. MongoDB 数据查询数组条件

A. 精确匹配数组元素

db.users.find( { tags:["java","mongodb"]})
  •   描述:查出所有数组中包含java和mongodb的文档,且有先后顺序

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

B. 无顺序 and 精确 匹配

db.users.find( { tags:{$all:["java","mongodb"]}})
  •  描述:查出所有数组中包含java和mongodb的文档

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

C. 至少匹配一个 

db.users.find( { tags:"java"})
  • 描述:查出所有数组中包含java的文档 

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA


D. 组合条件满足一个条件过滤

db.users.find( { age: { $gt: 15, $lt: 20 }})
  •  描述:查找 age ∈(15,20) 

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA


E. $elemMatch操作符查询内嵌文档

  • 作用:用于查同于个元素中的键值组合,
  • 针对 LIst<object> 查询
  • 详情请参考
db.test.insert({"id":1, "members":[{"name":"BuleRiver1", "age":27, "gender":"M"}, {"name":"BuleRiver2", "age":23, "gender":"F"}, {"name":"BuleRiver3", "age":21, "gender":"M"}]});
  • $elemMatch + 同一个元素中的键值组合
db.test.find({"members":{"$elemMatch":{"name":"BuleRiver1", "age":27}}});
  • $elemMatch+不同元素的键值组合(查不出结果
db.test.find({"members":{"$elemMatch":{"name":"BuleRiver1", "age":23}}});

F. 正则:模糊查询:/.* .*/

 db.users.find( { name:/.*feng.*/ })
  •   描述:查找 name 包含 feng 的文档

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

G. 正则:以xx开头:/^ .*/

 db.users.find( { name:/^zhang.*/ })
  •   描述:查找 name 以 zhang 开头的文档

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

H. 正则:以xx结尾:/.* $/

 db.users.find( { name:/.*g$/ })
  •   描述:查找 name 以 g 结尾的文档

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

7. MongoDB 数据查询嵌套数组文档

  • 造数据,其中 {}表示新的文档
db.users.insert([
{name:'ali',age:51,address:{country:'china',city:'beijing',district:'haidian',dd:'zhongguancunroad 10'}}
{name:'baby',age:51,address:{country:'china',city:'hangzhou',district:'xihu',dd:'zhongguancunroad 10'}}
{name:'baby2',age:17,address:{country:'china',city:'hangzhou',district:'xihu',dd:'zhongguancunroad 10'}}
{name:'baby3',age:18,address:{country:'china',city:'hangzhou',district:'xihu',dd:'zhongguancunroad 10'}}
{name:'xiaowang',age:19,address:{country:'china',city:'shanghai',district:'pudong',dd:'sjtu park 10'}}
])

db.orders.insert([
{name:"frank",items:[{title:"mongodb",count:1},{title:"java",count:3}]},
{name:"xulei",items:[{title:"iphone 8p",count:2}]},
{name:"wangsicong",items:[{title:"RR",count :1},{title:"Benz",count:10}]}]);

A. 文档嵌套:单条件查询

db.users.find({"address.country":'china'})
  •   描述:查 "address.country"='china' 的文档

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

B. 文档嵌套:多条件查询(and)

db.users.find({"address.country":'china',"address.city":"hangzhou",age:{$gte:18}})
  • 查  "address.country"='china'
  • 且  "address.city"="hangzhou"
  • 且   age≥18

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

三、映射Project 与 过滤

作用对查询结果的过滤

  • 如:查询后加,{name:1} ,表示只显示 name字段

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

  • 查询后加,{name:1,age:1} ,表示只显示 name + age 字段

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

  • 如:查询后加,{age:0} ,表示不显示 age字段

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

  • 注意: 1 和 0不能同时使用,如 name:1,age:0 ,否则会报错

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

四、去除重复 Distinct

作用对查询结果去重,并不会删除原文档

db.users.distinct("city")
db.users.distinct("address.city")

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

五、聚合分组统计 Group By

A.  三种方式

  • 聚合函数 
  • 聚合管道
  • MapReduce非常适用于大数据分析, 如基于java的hadoop

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

B:聚合函数 ( 了解即可

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

 注意:4.2.1中已经不支持 group( db.users.help() 查询没有group函数

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA

1. 分组统计不同年龄段的用户
db.users.group(
 {
   key: { age: 1 },
   cond:{ age:{$gt:16 }},
   reduce:function(curr, result) {
        result.total += 1;
        },
   initial: { total : 0 }
 }
)
2. 分组统计不同用户的订单总额

【DBA课程-笔记】第2章:MongoDB数据数据查询与分析,架构师之路-java,笔记,mongo,DBA文章来源地址https://www.toymoban.com/news/detail-550583.html

C:聚合管道

D:MapReduce (非常适用于大数据分析,如基于java的hadoop

到了这里,关于【DBA课程-笔记】第2章:MongoDB数据数据查询与分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python mongodb数据查询

    要在Python中执行MongoDB查询,需要使用MongoDB的官方Python驱动程序——PyMongo。首先,您需要安装PyMongo,然后连接到MongoDB数据库,执行查询操作。 安装PyMongo: 使用PyMongo连接到MongoDB 如果MongoDB需要用户名和密码进行身份验证,请使用PyMongo的MongoClient构造函数提供这些凭据来连接

    2024年02月07日
    浏览(28)
  • 基于MongoDB的空间数据存储与查询

    MongoDB 中使用 GeoJSON对象 或 坐标对 描述空间地理数据。MongoDB使用 WGS84 参考系进行地理空间数据查询。 1、MongoDB支持空间数据的存储,数据类型需要限制为GeoJSON; 2、MongoDB可以为GeoJSON类型数据建立索引,提升空间查询的效率; GeoJSON 对象格式 GeoJSON 对象有两个filed,分别是 ty

    2024年02月11日
    浏览(22)
  • 整理mongodb文档:find方法查询数据

    整理mongodb文档:find方法查询数据 求关注,求批评,求指出,如果哪儿不清晰,请指出来,谢谢 如题,本文讲的是如何用find查询数据,如何在数组、字段、对象中查询,以及‘或’等查询操作,最后讲了一些参数。依旧是在shell下操作。 查询数据是db操作中很重要的一步,而

    2024年02月13日
    浏览(26)
  • openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态

    195.1 分析查询语句运行状态 195.1.1 问题现象 系统中部分查询语句运行时间过长,需要分析查询语句的运行状态。 195.1.2 处理办法 以操作系统用户omm登录主机。 使用如下命令连接数据库。 postgres为需要连接的数据库名称,8000为端口号。 设置参数track_activities为on。 当此参数为

    2024年01月15日
    浏览(45)
  • 数据库信息速递 MONGODB 6.0 的新特性,更多的查询函数,加密查询,与时序数据集合 (译)...

    开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到3群(共1000人左右 1 + 2 + 3),最近发展的速度比较快,2群除特殊情况,不在添加

    2024年02月16日
    浏览(36)
  • 【数据库】通过实例讲清楚,Mongodb的增删查改,分组查询,聚合查询aggregate

    目录 一.基础概念 二.数据库的管理 1.创建数据库 2.删除数据库 二.集合的管理 1.显示所有集合 2.创建集合 3.删除当前集合 4.向集合中插入元素 三.文档的管理 1.文档插入 2.文档的更新 3.文档的删除 4.文档查询 (1)查询基本语法: (2)查询table2集合下的所有文档 (3)查询t

    2024年02月10日
    浏览(35)
  • openGauss学习笔记-198 openGauss 数据库运维-常见故障定位案例-分析查询效率异常降低的问题

    198.1 分析查询效率异常降低的问题 198.1.1 问题现象 通常在几十毫秒内完成的查询,有时会突然需要几秒的时间完成;而通常需要几秒完成的查询,有时需要半小时才能完成。 198.1.2 处理办法 通过下列的操作步骤,分析查询效率异常降低的原因。 使用analyze命令分析数据库。

    2024年01月16日
    浏览(51)
  • 数据结构课程设计-宿舍管理查询软件-(C/C++)

    目录 1. 系统需求分析      1.1 设计理由与意义      1.2 功能需求分析      1.3 数据需求分析 2. 系统设计       2.1 数据结构类型设计       2.2 整体功能结构设计      2.3 子模块详细设计       2.4 程序流程图设计 3.系统实现       3.1 系统源代码 4.运行效果截图(部分)

    2024年02月05日
    浏览(31)
  • 分布式数据库NoSQL(四)——MongoDB 之聚合函数查询统计

    MongoDB 中聚合( aggregate )主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果,通常由聚合管道操作符和聚合表达式组合,完成数据处理。功能有点类似 Sql 语句中的 sum()、agv() 等。 目录 第1关:聚合管道操作符将文档定制格式输出(一) 常用聚合管道操作符

    2024年02月09日
    浏览(38)
  • 数据结构课程设计——电话号码查询系统(C语言)

    1、通过文件导入和手动输入两种方式录入个人的基本信息(姓名、电话、QQ、微信) 2、可通过输入姓名或者电话号码来查询录入的人的基本信息 3、也可通过该系统修改和删除信息 1、菜单界面  2、读取文件(这里需要先创建一个txt文件)  3、手动添加信息  4、查询个人信

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包