提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、mongodb介绍
二、操作步骤
yum安装mongodb
创建库,合集,插入文档,增删改查操作
查询文档数据
更新文档数据
删除文档数据,合集,库
备份以及恢复数据库
创建管理用户和普通用户
提示:以下是本篇文章正文内容,下面案例可供参考
mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
应用场景:游戏 物流 社交 物联网 视频直播 大数据
在/etc/yum.repos.d/下创建mongodb-org.repo
vim /etc/yum.repos.d/
mongodb-org.repo
写入
[mongodb-org] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/ gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
yum clean #清空yum缓存
yum list #展开yum列表
yum make cache #建立缓存
安装mongodb
yum -y insyall mongodb-org
启动mongodb
systemctl start mongod
登录mongodb
mingo
由于mongodb不用主动创建,使用use 库,会自动创建不存在的数据库,只有在库中创建文档后才会保存,所以我们直接 use jx(库名)
在jx库中创建“ban”合集
db.createCollection("ban")
在“ban”合集中创建文档
db.ban.insertMany([{name:"zhang",age:20},{name:"li",age:30}])
再查看库,jx库已经存在了
show dbs
再看看合集
show tables
全集合查询
db.ban.find()
条件查询
db.ban.find({name:"zhang"})
更新数据
db.ban.update({name:"zhang"},{$set:{age:"31"}})
所有满足条件的文档数据都进行更新
db.ban.updateMany({age:30},{$set:{age:22}})
更新文档进行数值递增
db.ban.update({name:"wu"},{$inc: {age:1}})
条件删除文档数据
db.ban.remove({name:"wu"})
全文删除文档数据
db.ban.remove({})
删除合集
db.ban.drop()
这边可以看到库里没有数据后,jx库就查不到了
删除库,必须先进入库这里就不演示了,下面是执行语句
usr jx
db.dropdatabase()
现在我们库结构如下图
mongodump备份与 mongorestore恢复
mongodump备份
mongodump -h127.0.0.1 -djx -o/backup/dump/
可以看到生成了bson数据文件和json元数据文件(元数据描述了数据库和集合的结构和状态,包括集合的索引、存储引擎、文档数量、大小等等。)
mongorestore恢复
现在我们删除ban1合集,再恢复
mongoresore -h127.0.0.1 -djx -cban1 -o/backup/jx/ban1.bson
可以看到ban1已经恢复了
--drop 当目标数据库中存在同名集合则删除再恢复
我们在ban1中插入一条数据再恢复
mongorestore -h127.0.0.1 djx -cban1 --drop/backup/jx/ban1.bson
mongoexport备份与mongoimport恢复
mongoexport备份
mongoevport -h127.0.0.1 -djx -cban1 -o /backup/export/jx_ban1.json
mongoimport恢复
我们现在删除ban1,再恢复
db.ban1.drop
恢复
mongoimport -h127.0.0.1 -djx -cban1 /backup/export/jx_ban1.json
功能 mongodump mongoexport 导出文件格式 BSON 格式 JSON、CSV 或 TSV 导出的数据 所有数据库或指定的数据库 单个集合或指定的查询结果 数据筛选 通过参数筛选可选 可以通过查询作为筛选条件 导出位置 存储在指定的目录中 写入到指定文件中 数据转换 提供一些选项用于数据转换 提供 JSON 的格式化输出选项 数据大小 大多数情况下,只适用于小型和中型数据集 适用于小型、中型和大型数据集,但需要注意性能问题
mongodump
和 mongoexport
是不同的工具,它们各有不同的用途。在备份 MongoDB 数据时,mongodump
是更合适的选择,而当需要将 MongoDB 数据导出到其他数据格式或进行分析时,mongoexport
更合适。
创建管理用户 ,由于mongo的管理用户是内置角色,所以我们必须创一个内置角色的用户
read
:允许用户查找和读取特定数据库中所有或部分数据。
readWrite
:允许用户查找、读取以及插入、更新和删除特定数据库中的所有或部分数据。
dbAdmin
:允许用户管理特定数据库的资源,包括集合和索引。但无法查看或修改数据。
userAdmin
:允许用户创建、修改和删除该数据库中的其他用户。
dbOwner
:允许用户对特定数据库进行所有操作,包括读、写、修改数据库配置等。
clusterAdmin
:允许用户管理整个 MongoDB 集群,包括启动、停止节点、重新配置复制集和分片群集、管理备份和还原等。
backup
:允许用户备份特定 MongoDB 实例的数据。
restore
:允许用户还原特定 MongoDB 实例的数据。
root
:拥有对 MongoDB 实例进行管理操作的所有权限。此角色只应该给 MongoDB 系统管理员使用。
这边创建一个root超级管理员用户
use admin
db.createUser(
{
user: "root",
pwd: "123.com",
roles: [ { role: "root", db: "admin" } ]
}
)
MongoDB 的身份验证默认是关闭的,可以通过修改 mongod
的配置文件实现登录时密码验证
在etc/mongod。conf的security区域加上 然后重启服务
authorization: enabled
systemctl resatrt mongod
root登录
mongo admin -uroot -p
创建普通用户
创建一个只有对jx库有所有权限的用户
use jx
db.createUser(
{
user: "jxuser",
pwd: "123.com",
roles: [ { role: "dbOwner", db: "jx" } ]
}
)
mongo jx -ujxuser -p
可以看到只能看到jx库