加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

MongoDB基本操作备份恢复及用户管理

发布时间:2023-10-10 15:15:17 所属栏目:系统 来源:
导读:MongoDB的逻辑结构主要由文档、集合和数据库三部分组成。其中文档是MongoDB的核心概念,它是MongoDB逻辑存储的最小单元,相当于关系型数据库中的一行记录,多个文档组成集合,集合相当于关系型数据库中的表,多个集合
MongoDB的逻辑结构主要由文档、集合和数据库三部分组成。其中文档是MongoDB的核心概念,它是MongoDB逻辑存储的最小单元,相当于关系型数据库中的一行记录,多个文档组成集合,集合相当于关系型数据库中的表,多个集合组成数据库。
 
SQL术语 说明 MongoDB术语 说明
 
database 数据库 database 数据库
 
table 数据库表 collection 集合
 
row 记录 document 行域
 
column 字段 field 域
 
index index 索引
 
table joins 表连接 不支持
 
primary key 主键 primary key 自动将_id字段设置为主键
 
一个MongoDB中可以创建多个数据库,默认的数据库为test。
 
默认数据库:
 
admin:从权限的角度来看,这是root数据库。将一个用户添加到这个数据库中,该用户将自动继承所有数据库的权限;
 
local:这个数据永远不会被复制,可用来存储限于本地单台服务器的任意集合;
 
config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
 
MongoDB 登录、退出
 
#本地登录(默认实例端口号为:--port=27017,可以不写)
 
> mongo
 
#登录远程主机的实例
 
> mongo --host 192.168.1.2 --port =27017
 
#退出MongoDB
 
> exit
 
数据库
 
#创建数据库(如果数据库不存在,则创建数据库,否则切换到指定数据库)
 
> use school
 
#查看所有数据库
 
> show dbs
 
#删除school数据库
 
> use school
 
> db.dropDatabase()
 
#显示数据库操作命令
 
> db.help()
 
集合
 
集合就是MongoDB文档组,类似于关系数据库管理系统中的把表格,集合存于数据库中,集合没有固定的结构,这样子集合中可以存放不同格式和类型的表格。
 
#创建info集合
 
> db.createcollection('info')
 
#查看集合
 
方法一:
 
> show tabels
 
方法二:
 
> show colletctions
 
#显示info集合操作命令
 
> db.info.help()
 
文档(增、删、改、查)
 
文档是一个键值对(BSON),不需要设置相同的字段,并且相同的字段不需要相同的数据类型。
 
1. 插入文档
 
#插入一条记录
 
> db.info.insert({"id":1,"score":88,"address":"金川校区","hobby":["game","talk","sport"]})
 
#向指定集合中插入一条文档数据
 
> db.collection.insertOne()
 
#向指定集合中插入多条文档数据
 
> db.collection.insertMany()
 
#通过循环批量插入数据
 
> for(var i=1;i<100;i++)db.info.insert({"id":i,"name":"jack"+i})
 
2. 删除文档
 
#删除info集合中id=1的文档
 
> db.info.remove({"id":"1"})
 
3. 修改文档
 
#修改info集合id=1的name值为"zhangsan"文档
 
db.info.update({"id":"1"},{$set:{"name":"zhangsan"}})
 
4. 查询文档
 
#查询info集合所有文档
 
> db.info.find()
 
#查询info集合id为1的文档
 
> db.info.findOne({id:1})
 
#统计记录数
 
> db.info.count()
 
备份与恢复数据库
 
通过mongoexport和mongoimport目录来导出导入数据;
 
导出数据文件的格式为:JSON格式或CSV格式;
 
参数说明:
 
-d:数据库的名称
 
-c:collection的名称
 
-f:要导出哪些列
 
-o:要导出的文件名
 
-q:到导出数据的过滤条件
 
#备份本地school数据库
 
> [root@localhost ~]# mkdir /backup
 
[root@localhost ~]# mongodump -d school -o /backup/
 
2018-07-14T03:36:44.427-0400    writing school.info to
 
2018-07-14T03:36:44.429-0400    done dumping school.info (99 documents)
 
#恢复本地school数据库至数据库abc中
 
> [root@localhost ~]# mongorestore -d abc --dir=/backup/school
 
2018-07-14T03:37:40.174-0400    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
 
2018-07-14T03:37:40.174-0400    building a list of collections to restore from /backup/school dir
 
2018-07-14T03:37:40.175-0400    reading metadata for abc.info from /backup/school/info.metadata.json
 
2018-07-14T03:37:40.187-0400    restoring abc.info from /backup/school/info.bson
 
2018-07-14T03:37:40.208-0400    no indexes to restore
 
2018-07-14T03:37:40.208-0400    finished restoring abc.info (99 documents)
 
2018-07-14T03:37:40.209-0400    done
 
#导出本机school数据库info集合
 
> [root@localhost ~]# mongoexport -d school -c info -o /backup/info.json
 
2018-07-14T03:44:41.610-0400    connected to: localhost
 
2018-07-14T03:44:41.613-0400    exported 99 records
 
#导入备份数据至本机school数据库user集合
 
> [root@localhost ~]# mongoimport -d school -c user --file /backup/info.json
 
2018-07-14T03:45:09.300-0400    connected to: localhost
 
2018-07-14T03:45:09.330-0400    imported 99 documents
 
#导出本机school数据库user1集合id=10的数据
 
> [root@localhost ~]# mongoexport -d school -c user -q '{"id":{"$lt":10}}' -o /backup/top10.json
 
2018-07-14T03:51:23.968-0400    connected to: localhost
 
2018-07-14T03:51:23.969-0400    exported 9 records
 
复制数据库
 
> show dbs
 
> db.copyDatabase("school","school_1")
 
![image](https://note.youdao.com/favicon.ico)
 
克隆集合
 
#启用如下2个实例
 
> [root@localhost ~]# netstat  -tunlp | grep mongod
 
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      61249/mongod
 
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      61212/mongod
 
#登录端口号为27018的实例
 
> mongo --port 27018
 
#查询数据库
 
> show dbs
 
admin   0.000GB
 
config  0.000GB
 
local   0.000GB
 
#克隆端口号为27017实例的school数据库的info表至本实例数据库中
 
> db.runCommand({"cloneCollection":"school.info","from":"192.168.100.100:27017"})
 
![image](https://note.youdao.com/favicon.ico)
 
用户授权(认证登录)
 
#登录mongodb
 
mongo
 
#在admin数据库创建新用户root:123123
 
> use admin
 
> db.createUser({"user":"root","pwd":"123123","roles":["root"]})
 
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
 
#退出
 
> exit
 
#关闭mongodb服务
 
mongod -f /data/conf/mongodb1.conf --shutdown
 
#带认证参数方式启动mongodb服务
 
mongod -f /data/conf/mongodb1.conf --auth
 
#登录mongodb数据库
 
mongo
 
#查询数据库
 
show dbs
 
> 不显示内容,这里要先授权认证后才能执行操作
 
> use admin
 
#使用授权root用户验证
 
> db.auth("root":"123123")
 
#再次查询,已经可以查询数据了
 
> show dbs
 
admin   0.000GB
 
config  0.000GB
 
local   0.000GB
 
school  0.000GB
 
#退出
 
> exit
 
进程管理
 
1. 查看当前正在运行的进程的命令:db.currentOp() ------> 获取opid进程号
 
2. 终止正在运行的高消耗资源的进程命令:db.killOP(opid)
 
 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章