MongoDB备份恢复与导出导入

Posted 编程人,在天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB备份恢复与导出导入相关的知识,希望对你有一定的参考价值。

说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行。

一、备份与恢复

1. 备份:

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文件路径

(将使用某个用户账号将某个mongodb服务器上的某个数据库备份到某个路径下)

如果无需指定用户,可以去掉-u-p;如果导出本机的数据库,可以去掉-h;如果是默认端口,可以去掉--port

如果想导出所有数据库,可以去掉-d如果只想备份某个集合,应在”-d 数据库”后添加”-c 集合名”选项。

备份单个集合示例:

这个命令执行之后在D:\\mongodb\\backup目录会生成一个\'wjt\'文件夹,里面两个文件:friend.bson和friend.metadata.json,前者存储集合数据,后者存储集合的元数据,如索引信息等。

如果想根据查询条件来备份数据,则应该添加’-q 查询条件’选项。

查询条件备份示例:

(mongodb3.4.4查询条件使用单引号会报错:query is not in proper format

2. 恢复:

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d数据库 --drop 文件路径

--drop:恢复的时候,先删除当前数据库数据,然后恢复备份的数据

(恢复后,备份后添加、修改的数据都会被删除,慎用!若不使用该选项,则恢复过程可能会出现很多键重复的报错,键重复的数据将不被恢复)

如果只想备份某个集合,应在”-d 数据库”后添加”-c 集合名选项,备份某个集合的时候需要指定具体的bson文件,而不能只是指定文件目录。

恢复单个集合示例:

导入成功之后,不仅数据可以导入,索引信息也会导入。

 

二、导出与导入

1. 导出:

mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -c 表名 -f 字段名 -q 查询条件 --type=csv -o 文件路径

mongoexport导数据时一定要使用-c参数指定需要导出的集合,所以-o参数要指定一个具体的文件名而不能是目录。

-f:只导出指定的字段,多个字段之间使用英文逗号分隔。

--type:指定导出文件的格式。目前只支持jsoncsv,指定导出csv格式时一定需要使用-f参数指定需要导出的字段,csv文件第一行为字段名标题。

2. 导入:

1)导入json文件:

mongoimport -h IP --port 端口 -u用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名

--upsert:存在则更新,不存在则插入。若只是导入部分字段,则将其换成--upsertFields参数并指定字段名列表。

2)导入csv文件:
mongoimport -h IP --port 端口 -u用户名 -p 密码 -d 数据库 -c 表名 --type=csv --headerline --upsert --drop 文件名

--headerline:去除csv文件中的标题行,或使用-fields参数指定字段名,但这两个参数不能同时使用。

 

以上是关于MongoDB备份恢复与导出导入的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB基础之八 备份与恢复

MongoDB备份与恢复

MongoDB备份与恢复

MongoDB的导入导出备份恢复总结

MongoDB的导入导出备份恢复总结

MongoDB-备份和恢复