MongoDB数据库最全详解(从入门到精通万字图解)

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

MongoDB定义

MongoDB是一个文档数据库,是一个非关系性数据库 , 具体高性能 、高扩展、文档性 ,是目前NoSQL中最热门的数据库。

 

MongoDB优势

MongoDB有如何4大优势:

1.文档数据库

MongoDB面向文档的存储,以 JSON 格式的文档保存数据。

 

2.即时查询能力

MongoDB保留了关系型数据库即时查询的能力,保留了索引的能力,相比于同类型的NoSQL Redis 并没有上述的能力。

 

3.复制能力

MongoDB自身提供了副本集,将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移以及扩展读能力。

 

4.数据扩展

MongoDB使用分片技术,对数据进行扩展,MongoDB能自动分片,横向扩展简单。

 

MongoDB组成

MongoDB 的存储结构主要由:数据库、集合、文档三部分组成。

1.数据库(Database)

数据库是一个仓库,类似于关系型数据库中的数据库,一个数据库中可以包含多个集合。

 

2.集合(Collection)

集合类似于关系型数据库中的表,一个集合可以包含多个文档,类似关系式数据库一张表包含多个字段。

 

3.文档(Document)

文档是MongoDB 数据库中的最小单位,由 BSON 键值对,key-value组成。

MongoDB下载

Mongodb下载安装教程(手把手教你4步成功)

Mongodb下载地址:https://www.mongodb.com/try/download/community

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

选择操作系统,以及具体的版本下载,如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

 

Mongodb安装

MongoDB安装配置教程(手把手教你4步成功)

1.选择安装模式

如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

这里有两种安装模式:

  • complete(一键安装)
  • custom(自定义安装路径);

一般选择自定义安装,选择上图第二个方式安装即可。

 

2.修改数据和日志路径

如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

分别填写Data Directory(数据路径),以及Log Directory(日志路径)。

 

3.去除自动安装可视化

一直下一步,直到出现Install MongoDB Compass,这个是MongoDB的官方可视化工具。

如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

这里暂时先不要√上,原因是下载的话是很慢,不然的话是需要重新安装的,下面单独安装MongoDB可视化工具即可。

 

MongoDB可视化工具

Mongodb可视化管理工具(4款主流工具详解)

1.MongoDB Compass

上面MongoDB安装好后,最好单独安装MongoDB Compass可视化工具。

MongoDB Compass下载地址:https://www.mongodb.com/try/download/compass

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

MongoDB Compass是MongoDB 官方,提供的可视化工具。

 

2.Studio 3T

Studio 3T是一个集成开发环境,专门为使用MongoDB的团队设计,Studio 3T下载地址:https://studio3t.com

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

Studio 3T可以帮助用户更加轻松的进行开发工作,Studio 3T 属于收费工具,有30 天的免费试用期。

 

3.Robo 3T (Robomong) 推荐

Robo 3T,以前称为Robomongo,是MongoDB爱好者的流行免费MongoDB 可视化工具,推荐。

Robo 3T官网下载地址:https://studio3t.com/download-studio3t-free

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

 

 

MongoDB配置

MongoDB安装成功后,接着需要配置MongoDB环境变量。

1.设置环境变量

右击我的电脑–>属性,如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

 

2.高级系统设置

在打开的系统窗口中,在左侧找到高级系统设置选项并打开,如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

 

3.环境变量

如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

找到 path,如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

将自己的 MongoDB安装目录的bin 文件地址添加上去,如下图所示:

MongoDB数据库最全详解(从入门到精通万字图解)-mikechen

点击确定,这样系统环境变量我们就配置好了。

 

MongoDB语法

MongoDB语法详解(8大常见MongoDB语法)

MongoDB新建数据库语法

MongoDB创建数据库,语法:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

示例:

use mikechen

 

MongoDB查看数据库语法

命令:

show dbs

 

MongoDB删除数据库语法

use DATABASE_NAME
#执行删除语句
db.dropDatabase()

 

MongoDB插入语法

采用insert的方式,语法:

db.集合名.insert({键值对,键值对,.....})

示例:

#先进入mikechen数据库
use mikechen

#在用户名插入数据
db.users.insert({name:"小张", age:19, gender:1, address:"广州", isDelete:0})

意思就是:进入到mikechen数据库,在users用户集合下,插入一条小张的用户数据。

 

MongoDB查询所有记录

db.users.find();

默认每页显示20条记录。

 

MongoDB查询记录总数

db.users.find().count();

 

MongoDB查询去重

db.uses.distinct("name");

 

MongoDB条件查询

db.users.find({"age" : 28})

查询 age = 28 的记录,这就给MySQL的where age=28类似。

 

MongoDB分页查询

db.users.find().limit(5).skip(2);

limit类似SQL的limit,skip类似SQL的offset偏移量。

用于分页,这个与MySQL的分页查询类似,limit 是 pageSize,skip 是第几页*pageSize。

更加详细的MongoDB查询,可以查看:Mongodb查询语句详解(12条最常用查询语句)

 

MongoDB删除语法

采用remove(),MongoDB删除数据,语法:

db.products.remove( {} )

删除所有产品数据。

也可以指定删除条件,再删除,语法:

db.users.remove( { age: { $gt: 20 } } )

删除年龄大于20的用户数据。

删除集合下所有的文档,示例:

db.collection.deleteMany ({})

删除所有文档,传入空 {} 即可。

更加详细的MongoDb删除数据,可以查看:MongoDB删除数据详解(3种常见删除方式)

 

MongoDB模糊查询

MongoDB模糊查询,语法:

db.users.find({name: /mikechen/});

模糊查询名字包含“mikechen”,相当于MySQL中的模糊查询:where name like ‘%mikechen%’。

更加详细的MongoDb模糊查询,可以查看:MongoDB模糊查询详解(2种常见模糊查询方式)

 

MongoDB常用命令

MongoDB命令详解(11大最常用MongoDB命令)

创建集合

集合,类似关系型数据库中的表。

先切换到制定数据库,输入命令:

db.createCollection(name)

 

在集合下插入数据

命令:

db.collection.insert({id:1})

如果collection不存在,则会先创建collection,这是一种隐式创建方式。

 

删除名称集合

命令:

db.cls.dop()

删除名称为cls的集合。

 

查看当前数据库下的所有集合

命令:

show collections

 

文档插入

文档(document)对应关系型数据库中的一行数据,数据结构和 JSON 基本一样,叫做BSON格式。

命令:

db.COLLECTION_NAME.insert(document)

 

MongoDB使用场景

MongoDB使用场景详解(6大应用场景案例)

MongoDB的主要目标是在:键/值存储方式,并提供了高性能、高度伸缩性的场景。

MongoDB的使用场景,主要包含如下:

1.JSON 数据的存储

MongoDB采用BSON 数据格式存储,类似JSON格式,所以非常适合文档化格式的存储及查询。

 

2.数据量很大的场景

MySQL在一个单达表到5-10GB时会出现明显的性能降级,此时需要通过数据的水平和垂直拆分、库的拆分完成扩展。

而MongoDB内建了多种数据分片的特性,Mongo非常适合由数十或者数百台服务器组成的数据库,可以很好的适应大数据量的需求。

 

3.表结构不明确,且数据在不断变大

由于MongoDB是文档型数据库,为非结构的文档增加一个新字段是很快速的操作,并且不会影响到已有数据,而传统关系式数据库,增加一个字段会锁住整个数据库/表。

另外一个好处是,当业务数据发生变化时,是将不在需要由DBA修改表结构。

 

4.适用于实时插入查询

适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性。

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法