mongodb数据导入导出

说明:mongodb数据库数据导出格式有 csv和json两种格式,可以通过参数指定导出格式

一、命令 mongoexport 数据导出

1、参数说明

-h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
–port:代表远程连接的数据库的端口,默认连接的远程端口27017;
-u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
-p,–password:代表连接数据库的账号对应的密码;
-d,–db:代表连接的数据库;
-c,–collection:代表连接数据库中的集合;
-f, --fields:代表集合中的字段,可以根据设置选择导出的字段;
–type:代表导出输出的文件类型,包括csv和json文件;
-o, --out:代表导出的文件名;
-q, --query:代表查询条件;
–skip:跳过指定数量的数据;
–limit:读取指定数量的数据记录;
–sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。
注意:
当查询时同时使用sort,skip,limit,无论位置先后,最先执行顺序 sort再skip再limit。

2、实操
导出为json格式
[yukw@mongodb1 backup_mongodblog]$ /data/service/mongodbwork/mongodb/bin/mongoexport --port 30000 -uusername_backup -ppasswd -d dbname -c collection --type=json -o /data/service/backup_mongodblog/collection.json
2019-08-02T09:43:54.370+0800	connected to: localhost:30000
2019-08-02T09:44:03.771+0800	exported 34839 records
导出为csv格式
[yukw@mongodb1 backup_mongodblog]$ /data/service/mongodbwork/mongodb/bin/mongoexport --port 30000 -uusername_backup -ppasswd -d dbname -c collection --type=csv -o /data/service/backup_mongodblog/collection1.csv
2019-08-01T17:39:42.340+0800	Failed: CSV mode requires a field list
[yukw@mongodb1 backup_mongodblog]$ /data/service/mongodbwork/mongodb/bin/mongoexport --port 30000 -uusername_backup -ppasswd -d dbname -c collection --type=csv -f path,projId,isLink -o /data/service/backup_mongodblog/collection1.csv
2019-08-01T17:40:44.588+0800	connected to: localhost:30000
2019-08-01T17:40:45.105+0800	exported 34839 records
二、命令 mongoimport 数据导入
1、参数说明

h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
–port:代表远程连接的数据库的端口,默认连接的远程端口27017;
-u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
-p,–password:代表连接数据库的账号对应的密码;
-d,–db:代表连接的数据库;
-c,–collection:代表连接数据库中的集合;
-f, --fields:代表导入集合中的字段;
–type:代表导入的文件类型,包括csv和json,tsv文件,默认json格式;
–file:导入的文件名称
–headerline:导入csv文件时,指明第一行是列名,不需要导入;

2、实操
集合中没有数据,插入完整数据
[yukw@mongodb1 backup_mongodblog]$ /data/service/mongodbwork/mongodb/bin/mongoimport --port 30000 -uuser_restore -ppasswd -d dbname -c collection --type=json --file /data/service/backup_mongodblog/collection.json
2019-08-01T17:49:43.423+0800	connected to: localhost:30000
2019-08-01T17:49:46.397+0800	[###########.............] dbname.collection	20.9 MB/44.1 MB (47.3%)
2019-08-01T17:49:49.396+0800	[####################....] dbname.collection	37.3 MB/44.1 MB (84.6%)
2019-08-01T17:49:52.396+0800	[########################] dbname.collection	44.1 MB/44.1 MB (100.0%)
2019-08-01T17:49:53.424+0800	imported 34839 documents
集合已有数据,需要在集合中新增数据
[yukw@mongodb1 backup_mongodblog]$ /data/service/mongodbwork/mongodb/bin/mongoimport --port 30000 -uuser_restore -ppasswd -d dbname -c collection --type=json --file /data/service/backup_mongodblog/collection.csv
2019-08-02T09:47:35.947+0800	connected to: localhost:30000
2019-08-02T09:47:35.950+0800	imported 1 document
三、按条件查询控制数据数据条数
[yukw@mongodb1 backup_mongodblog]$ /data/service/mongodbwork/mongodb/bin/mongoexport --port 30000 -uuser_backup -ppasswd -d dbname -c collection --type=json -o /data/service/backup_mongodblog/collection.csv --query='{"moduleId" : "5638a07a45cece11ce3f106a"}' --limit=5
2019-08-02T10:07:48.223+0800	connected to: localhost:30000
2019-08-02T10:07:48.231+0800	exported 5 records