今天有个需求,将测试环境的有些配置从测试环境的mongo迁移到线上环境。
首先想到类似mysql的办法,使用可视化工具进行操作,但是发现RoboMongodb不支持,在网上查了查也没有找到有合适的工具。
在搜索的过程中,找到mongodb有自己写好的轮子,不用再造轮子了。
mongodump 备份命令 生成json bson
json 是表结构
bson 是表数据
具体命令:
./bin/mongodump -u root -p xxx --port 28002
--authenticationDatabase=admin -d test -c student
-q '{name:{$regex:"P"}}' -o ./test/
具体解释一下参数:
- -u 用户名
- -p 密码
- -port 端口号
- -d 库名
- -c colletion name
- -q 条件
- -o 输出的路径
说一下遇到的坑,需求的条件为多个条件,但是发现不太支持,也可能是自己写的问题,后来将多个拆成多个条件,逐一处理。还有说一下为什么不能用接口调用,个人理解,以为由于环境的不同在代码中只能将数据暂时放到文件中,然后在进行解析,这样实在太麻烦了。
好,继续现在数据已经导出了,下面进行导入。
./bin/mongorestore -u root -p xxx --port 28002 --authenticationDatabase admin -d test1 -c test ./test/test/student.bson
同样解释一下参数
- -u -p -port -d -c 同上配置
- 最后的参数为bson的路径
mongorestore上面的命令是将数据进行添加不会对,原始数据造成影响。
同时需要更多参数,请使用 - -help