场景

将远程服务器A上的MongoDB数据库test下的集合people导入到服务器B数据库test的集合people_test下。

 

简单方案

先将A服务器数据导出,然后再执行导入到B服务器。

下面的导入和导出操作,均是在git bash下执行,如果是在windows命令行下需要稍微更改路径。

 

工具

利用本地原生MongoDB安装目录下的bin目录中的mongoexportmongoimport 

 

导出数据

这里,我打算将远程服务器A上的数据导入到我本地windows系统e盘temp目录下;

首先,进入到MongoDB的安装目录,然后:

cd bin
mongoexport -u admin -p 123456 --authenticationDatabase admin -h 10.5.10.22:27017 -d test -c people -o /e/temp/people.json 

 

 

参数说明
-u 用户名
-p 密码
--authenticationDatabase 保存用户凭据的数据库(一般是admin)
-h host:port
-d 数据库名
-c 表名(只能接受一个表名参数,不能接受由空格、逗号等 分隔的多个表名,也不能用"*")
-o 导出的文件名
--file 导入的文件名
--upsert 导入的记录创建或更新

 

更多详细的操作:mongoexport --help

 

 

导入数据

这里我打算将本地windows系统e盘temp目录下的people.json文件导入到服务器B上;

也是在bin目录下;

mongoimport -u admin -p 123456 --authenticationDatabase admin -h 10.6.22.12:27017 -d test -c people_test --file /e/temp/people.json --upsert rm /e/temp/people.json

 

总结

 

操作执行
导出 mongoexport -u 用户名 -p 密码 --authenticationDatabase 用户凭据数据库 -h ip:port -d 数据库名 -c 表名 -o 导出的文件名.json
导入后删除文件 mongoimport -u 用户名 -p 密码 --authenticationDatabase 用户凭据数据库 -h ip:port -d 数据库名 -c 表名 --file 导出的文件名.json --upsert && rm 导出的文件名.json

 

能够利用windows本地安装的MongoDB bin目录下的程序导入和导出远程服务器上的数据;

如果是导出本地MongoDB的数据,就不需要用户名和密码以及保存用户凭据的数据库。

MongoDB官方文档:https://docs.mongodb.com/manual/reference/program/mongoexport/