一、docker部署MongoDB
## 通过docker安装MongoDB
~~~shell
#拉取镜像
docker pull mongo:4.0.3
#创建容器
docker create --name mongodb-server -p 27017:27017 -v mongodb-data:/data/db mongo:4.0.3 --auth
#启动容器
docker start mongodb-server
#进入容器
docker exec -it mongodb-server /bin/bash
#进入admin数据库
mongo
use admin
#添加管理员,其拥有管理用户和角色的权限
db.createUser({ user: 'root', pwd: 'root', roles: [ { role: "root", db: "admin" } ] })
#退出后进行认证
#进行认证
mongo -u "root" -p "root" --authenticationDatabase "admin"
#通过admin添加普通用户
use admin
db.createUser({ user: 'house', pwd: 'oudqBFGmGY8pU6WS', roles: [ { role: "readWrite", db: "house" } ] });
#通过tanhua用户登录进行测试
mongo -u "house" -p "oudqBFGmGY8pU6WS" --authenticationDatabase "admin"
#发现可以正常进入控制台进行操作
二、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
三、在applicatino.yml中配置
spring.data.mongodb.username=house
spring.data.mongodb.password=oudqBFGmGY8pU6WS
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=house
spring.data.mongodb.port=27017
spring.data.mongodb.host=192.168.92.136
spring.data.mongodb.auto-index-creation=true
四、常用命令
4.1 数据库级别命令
-
show dbs
: 显示所有数据库 -
db
: 显示当前数据库 -
use <db_name>
: 切换到指定的数据库 -
db.dropDatabase()
: 删除当前数据库
4.2 集合级别命令
-
show collections
: 显示当前数据库中的所有集合 -
db.createCollection(name, options)
: 创建一个新的集合 -
db.<collection>.drop()
: 删除指定的集合
4.3 文档级别命令
-
db.<collection>.insert(doc)
: 插入一个文档 -
db.<collection>.insertMany(docs)
: 插入多个文档 -
db.<collection>.find(query)
: 查询文档 -
db.<collection>.update(query, update, options)
: 更新文档 -
db.<collection>.remove(query, justOne)
: 删除文档 -
db.<collection>.findOne(query)
: 查询第一个文档 -
db.<collection>.count(query)
: 计算集合中的文档数量
4.4 索引级别命令
-
db.<collection>.createIndex(keys, options)
: 创建索引 -
db.<collection>.dropIndex(indexName)
: 删除索引 -
db.<collection>.getIndexes()
: 获取集合的所有索引信息
4.5 聚合命令
db.<collection>.aggregate(pipeline)
: 对集合中的数据进行聚合操作
4.5.1 聚合管道阶段
-
$match
:过滤数据,只输出符合条件的文档。 -
$group
:将集合中的文档分组,可用于计算总和、平均数、最大值、最小值等。 -
$sort
:对输入的文档进行排序。 -
$project
:选择、添加或删除文档的字段。 -
$limit
:限制聚合管道返回的文档数。 -
$skip
:在聚合管道中跳过指定数量的文档。 -
$unwind
:将数组字段中的每个值拆分为一个文档。 -
$lookup
:用于执行左外连接,从其他集合中获取文档数据。 -
$graphLookup
:用于在聚合管道中执行图搜索。 -
$bucket
:将文档分配到指定的数量或范围内的“桶”中。 -
$bucketAuto
:根据指定的字段值自动创建“桶”。 -
$replaceRoot
:用指定的文档替换输入文档。 -
$count
:计算聚合管道中的文档数。
4.5.2 聚合操作
-
$sum
:计算总和。 -
$avg
:计算平均值。 -
$min
:获取最小值。 -
$max
:获取最大值。 -
$first
:获取第一个文档的字段值。 -
$last
:获取最后一个文档的字段值。 -
$push
:将值添加到一个数组中。 -
$addToSet
:将唯一的值添加到一个数组中。 -
$concat
:连接字符串。 -
$substr
:获取字符串的子字符串。 -
$size
:获取数组字段的大小。
4.6 其他命令
-
db.getCollectionNames()
: 获取当前数据库中所有集合的名称 -
db.stats()
: 获取数据库统计信息 -
db.version()
: 获取MongoDB服务器版本 -
db.serverStatus()
: 获取MongoDB服务器状态