mongodb的备份、还原、导出、导入
有时候,我们需要将 mongodb 的数据进行备份和还原,然后采用 Navicat 这种可视化工具导出的数据集合会有一个问题,就是一个文档的字段里面如果包含对象,它是不能支持的。所以我们需要用到原生的命令来进行。
备份
1 | mongodump -h IP --port 端口 -u 用户名 -p 密码 --authenticationDatabase 验证账号的数据库(一般是 admin) -d 数据库 -o 文件存在路径 |
如果不输入 -h 和 --port,表示使用默认的 IP 和端口
如果想导出所有的数据库,可以去掉 -d
如果 mongodb 设置了密码并且启用了验证,那必须输入
-u -p --authenticationDatabase
三个参数才行
可以使用 mongodump --help
来查看所有的命令
生成的结果目录为
文件存在的路径/数据库名称/数据库数据文件
还原
1 | mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --authenticationDatabase 验证账号的数据库(一般是 admin) --drop 文件存在路径 |
要注意的是,--drop 的路径和上面 -o 的路径不同,这儿是指数据库文件数据真正存放的位置.
导出表或者表中的部分字段
1 | mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -o |
-q 条件导出
-o 文件名
-f
导出指字段,以字号分割,-f name,email,age
导出name,email,age
这三个字段
-q 可以根查询条件导出,-q '{ "_id" : "10001" }'
导出 uid
为 100 的数据
--csv 表示导出的文件格式为 csv 的,这个比较有用,因为大部分的关系型数据库都是支持 csv
--type json 表示导出的文件格式为 json 格式
导入表或者表中部分字段
1 | mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名 |
--upsert
表示插入或者更新现有的数据
致谢
本文借鉴于:https://segmentfault.com/a/1190000006236494