以windows为例,整理之前的学习笔记,在此简单记录一下MongoDB数据的导入导出和备份二进制Bson数据。

一、MongoDB导出与导入说明

我们可以通过MongoDB的mongoimport工具和mongoexport工具对MongoDB的数据进行导入导出的操作,他们既可以操作本地服务器,也可以操作远程的服务器,他们共同的参数如下:

-h host    主机的IP
--port      端口
-u username 数据库的用户名
-p passwd   数据库的密码
这里以本地为例,所以没用到上面参数

他们各自支持的参数,可以通过mongoimport –help 或者 mongoexport –help查看

二、MongoDB导入

mongoimport可以把json格式或csv格式的文件导入到collection,mongoimport主要参数有:

-d: 数据库的名字
-c: collection的名字
-f: 要导入那些列
--type  csv/json(默认)
--file 导入的文件路径
本人MongoDB安装在c盘,先cd到C:\Program Files\MongoDB\Server\4.0\bin的目录下,然后运行mongo,先建一个集合order来测试。
use myTest
db.createCollection('order')
myTest库是之前已经创建好的

1、导入json格式的文件

这里我是在C:\MongoDB 下新建一个order.json文件,把它导入到集合order中去,

mongoimport -d myTest -c order --file C:\MongoDB\order.json

-d: 指明数据库名,本例中为myTest
-c: 指明collection名,本例中为order
order.json:导入的文件名和路径

内容如下

{
	"orderId":1,
	"money":100,
	"status":1
}
{
	"orderId":2,
	"money":200,
	"status":2
}
{
	"orderId":3,
	"money":300,
	"status":3
}

起初order.json本人不小心用逗号隔开了,运行时发现出现如下图的问题

后来把逗号去掉就成功了。

2、导入CSV格式化文件

导入CSV格式文件中的内容,则需要通过–type参数指定导入格式,如图所示我们的orderExport.csv数据如下:

这里,先把order的数据清空,然后导入到order去,执行

mongoimport -d myTest -c order --type csv --headerline C:\MongoDB\orderExport.csv
-headerline: 指明第一行是列名,不需要导入

如图所示我们成功导入3条数据了。

三、Mongodb导出

mongoexport工具可以把一个collection导出成json格式或csv格式的文件。

主要参数说明如下:

-d: 指明数据库的名字
-c: 指明collection的名字
-f: 指明要导出那些列
-o: 指明到要导出的文件名
-q: 指明导出数据的过滤条件 
	
--type=csv  导出csv格式(因为默认导出了JSON格式的数据)
总之,意思就是问我们要导出:那个库,那个集合(表), 哪几列,哪几行?


我们把上面的order集合的数据导出来。

1、全部简单导出

mongoexport -d myTest -c order -o C:\MongoDB\orderExport.json

如图所示成功导入3条数据了。在我们C:\MongoDB\ 也已生成orderExport.json

2、导出csv格式的数据

比如我们要导出 myTest库,order集合,orderId,money两列,到出的文件名为orderExport.csv。而且是csv格式化的数据,命令如下:

mongoexport -d myTest -c order --type=csv -f orderId,money -o C:\MongoDB\orderExport.csv

加一个条件,导出money大于等于200的数据
mongoexport -d myTest -c order --type=csv -f orderId,money -o C:\MongoDB\orderExport1.csv -q {money:{$gt:200}}
小记:
1、导出csv格式时,要用-f指定列字段,否则导不出。
2、使用–type=csv,(一开始我使用的是–csv,报错,按提示使用–type=csv就对了。)
3、开始query用json string,比如:'{money:{$gt:200}}’,发现不对。后来去掉就可以了。
成功了如图所示:


四、备份数据

我们可以使用mongodump命令来导出二进制的数据,也就是备份MongoDB的数据,该命令可以导出所有数据到指定目录中。
比如我们要导出我们上面的myTest数据库

执行

mongodump -d myTest -o C:\MongoDB
如图所示成功导出了


参考文档:https://www.mongodb.org.cn/manual/197.html