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下载地址:https://www.mongodb.com/try/download/community
选择操作系统,以及具体的版本下载,如下图所示:
Mongodb安装
1.选择安装模式
如下图所示:
这里有两种安装模式:
- complete(一键安装)
- custom(自定义安装路径);
一般选择自定义安装,选择上图第二个方式安装即可。
2.修改数据和日志路径
如下图所示:
分别填写Data Directory(数据路径),以及Log Directory(日志路径)。
3.去除自动安装可视化
一直下一步,直到出现Install MongoDB Compass,这个是MongoDB的官方可视化工具。
如下图所示:
这里暂时先不要√上,原因是下载的话是很慢,不然的话是需要重新安装的,下面单独安装MongoDB可视化工具即可。
MongoDB可视化工具
1.MongoDB Compass
上面MongoDB安装好后,最好单独安装MongoDB Compass可视化工具。
MongoDB Compass下载地址:https://www.mongodb.com/try/download/compass
MongoDB Compass是MongoDB 官方,提供的可视化工具。
2.Studio 3T
Studio 3T是一个集成开发环境,专门为使用MongoDB的团队设计,Studio 3T下载地址:https://studio3t.com
如下图所示:
Studio 3T可以帮助用户更加轻松的进行开发工作,Studio 3T 属于收费工具,有30 天的免费试用期。
3.Robo 3T (Robomong) 推荐
Robo 3T,以前称为Robomongo,是MongoDB爱好者的流行免费MongoDB 可视化工具,推荐。
Robo 3T官网下载地址:https://studio3t.com/download-studio3t-free
如下图所示:
MongoDB配置
MongoDB安装成功后,接着需要配置MongoDB环境变量。
1.设置环境变量
右击我的电脑–>属性,如下图所示:
2.高级系统设置
在打开的系统窗口中,在左侧找到高级系统设置选项并打开,如下图所示:
3.环境变量
如下图所示:
找到 path,如下图所示:
将自己的 MongoDB安装目录的bin 文件地址添加上去,如下图所示:
点击确定,这样系统环境变量我们就配置好了。
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常用命令
创建集合
集合,类似关系型数据库中的表。
先切换到制定数据库,输入命令:
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的主要目标是在:键/值存储方式,并提供了高性能、高度伸缩性的场景。
MongoDB的使用场景,主要包含如下:
1.JSON 数据的存储
MongoDB采用BSON 数据格式存储,类似JSON格式,所以非常适合文档化格式的存储及查询。
2.数据量很大的场景
MySQL在一个单达表到5-10GB时会出现明显的性能降级,此时需要通过数据的水平和垂直拆分、库的拆分完成扩展。
而MongoDB内建了多种数据分片的特性,Mongo非常适合由数十或者数百台服务器组成的数据库,可以很好的适应大数据量的需求。
3.表结构不明确,且数据在不断变大
由于MongoDB是文档型数据库,为非结构的文档增加一个新字段是很快速的操作,并且不会影响到已有数据,而传统关系式数据库,增加一个字段会锁住整个数据库/表。
另外一个好处是,当业务数据发生变化时,是将不在需要由DBA修改表结构。
4.适用于实时插入查询
适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性。