因为安全问题,服务器屏蔽了mongoDB给外部客户端调用,所以我们就不可以使用Navicat等客户端连接,操作确实不方便。最近需要导出一些mongoDB数据,只能采用命令的方式导出数据,需要借助mongoexport
这个命令,命令使用比较容易,掌握一些参数用法即可
--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
--port:代表远程连接的数据库的端口,默认连接的远程端口27017;
--username:代表连接远程数据库的账号;
--password:代表连接数据库的账号对应的密码;
--db:代表连接的数据库;
--collection:代表连接数据库中的集合;
--fields:代表要导出集合中的字段;
--type:代表导出输出的文件类型,包括csv和json文件;
--out:代表导出的文件名;
--query:代表查询条件;
--skip:跳过指定数量的数据;
--limit:读取指定数量的数据记录;
--sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。
生产环境,mongodb是部署在docker里,所以下面结合docker命令,介绍一下使用过程
查看mongo容器
[root@work01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0achabcdefghi mongo "docker-entrypoint.s…" 3 years ago Up 9 months 0.0.0.0:27017->27017/tcp test_mongo
进入这个mongo容器
docker exec -it 0ach bash
使用mongoexport命令
root@0achabcdefghi:/# mongoexport --db test_item --collection testModel --type=csv --fields=_id,BATCH_VERSION,ITEM_NAME --out 1.csv
2023-03-10T13:45:30.736+0000 connected to: localhost
2023-03-10T13:45:31.734+0000 [##############..........] test_item.testModel 24000/39373 (61.0%)
2023-03-10T13:45:31.907+0000 [########################] test_item.testModel 39373/39373 (100.0%)
2023-03-10T13:45:31.907+0000 exported 39373 records
然后exit
命令退出容器,copy一下容器里文件到linux服务器里,test_item_mongo是容器的name
docker cp test_item_mongo:1.csv 1.csv