一、MongoDB简介 1.1 MongoDB介绍
MongoDB是一个强大、灵活,且易于扩展的通用型数据库。MongoDB是C++编写的文档型数据库,有着丰富的关系型数据库的功能,并在4.0之后添加了事务支持。
随着存储数据量不断的增加,开发者面临一个困难:如何扩展数据库?而扩展数据库分为横向扩展和纵向扩展,纵向扩展就是使用计算能力更强大的机器,它的缺点就是:机器性能的提升有物理极限的制约,而且大型机通常都是非常昂贵的,而MongoDB的设计采用的是横向扩展的模式,面向文档的数据模型使它很容易的在多台服务器上进行数据分割。MongoDB能自动处理夸集群的数据和负载,自动重新分配文档,这样开发者就能集中精力编写应用程序,而不需要考虑如果扩展的问题。
1.2 MongoDB安装MongoDB的安装简单来说分为两种:
官网下载对应物理机的安装包,直接安装
使用Docker镜像,安装到Docker上
推荐使用第二种,直接使用MongoDB镜像安装到Docker上,这样带来的好处是:
安装简单、方便,且快速
更容易进行数据迁移,使用Docker可以很容易的导入和导出整个MongoDB到任何地方
所以本文将重点介绍MongoDB在Docker上的安装和使用。
如果想要直接在物理机安装Docker,可以查看我之前的一篇文章《MongoDB基础介绍安装与使用》:https://www.cnblogs.com/vipstone/p/8494347.html
1.3 Docker上安装MongoDB在Docker上安装软件一般需要两步:
pull(下载)对应的镜像(相对于下载软件)
装载镜像到容器(相对于安装软件)
1.3.1 下载镜像下载镜像,需要到镜像市场:https://hub.docker.com/,如要要搜索的软件“mongo”,选择官方镜像“Official”,点击详情,获取相应的下载方法,我们得到下载MongoDB的命令如下:
docker pull mongo:latest
1.3.2 装载镜像到容器使用命令:
docker run --name mongodb1 -p 27018:27017 -d mongo:latest
--name 指定容器名称
-p 27018:27017 映射本地端口27018到容器端口27017
-d 后台运行
mongo:latest 镜像名称和标签
使用“docker images”查看镜像名称和标签,如下图:
容器装载成功之后,就可以使用Robo 3T客户端进行连接了,是不需要输入用户名和密码的,如下图:
表示已经连接成功了。
Robo 3T为免费的连接MongoDB的数据库工具,可以去官网下载:https://robomongo.org/download
1.3.3 开启身份认证如果是生成环境,没有用户名和密码的MongoDB是非常不安全的,因此我们需要开启身份认证。
Setp1:装载容器我们还是用之前下载的镜像,重新装载一个容器实例,命令如下:
docker run --name mongodb2 -p 27019:27017 -d mongo:latest --auth
其中“--auth”就是开启身份认证。
装载完身份认证成功容器之后,我们需要进入容器内部,给MongoDB设置用户名和密码。
Setp2:进入容器内部docker exec -it bash
Setp3:进入mongo命令行模式mongo admin
Setp4:创建用户db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
创建的用户名为“admin”密码为“admin”,指定的数据库为“admin”。
这个时候,我们使用Robo 3T 输入相应的信息进行连接,如下图:
表示已经连接成功了。
1.3.4 创建数据库设置用户上面我们用“admin”账户使用了系统数据库“admin”,通常在生成环境我们不会直接使用系统的数据库,这个时候我们需要自己创建自己的数据库分配相应的用户。
Setp1:首先需要进入容器docker exec -it bash
Setp2:创建数据库use testdb
如果没有testdb就会自动创建数据库。
Setp3:创建用户分配数据库db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "readWrite", db: "testdb" } ] });
其中 role: "readWrite" 表式给用户赋值操作和读取的权限,当然增加索引、删除表什么的也是完全没有问题的。
到目前为止我们就可以使用admin/admin操作testdb数据库了。
1.3.5 其他Docker命令删除容器:docker container rm
停止容器:docker stop
启动容器:docker start
查看运行是容器:docker ps
查询所有的容器:docker ps -a
二、MyBatis集成MongoDBSpring Boot项目集成MyBatis前两篇文章已经做了详细的介绍,这里就不做过多的介绍,本文重点来介绍MongoDB的集成。
Setp1:添加依赖在pom.xml添加如下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> Setp2:配置MongoDB连接