MongoDB中mongoexport工具的用处是什么?怎样使用?
Admin 2021-05-06 群英技术资讯 2115 次浏览
这篇文章主要给大家介绍MongoDB mongoexport工具,包括mongoexport工具的基本介绍,常用参数,命令等等,对大家了解mongoexport工具的使用有一定的参考价值,感兴趣的朋友就继续往下看吧。
mongoexport是一个数据导出的工具,使用的时候类似mysql中的select into outfile语法,可以将某个数据库中的数据以json或者csv的格式导出来。
我们可以通过直接连接mongos或者连接mongod来导出数据。如果你的集群是分片集群,连接mongos会导出所有分片上这个集合的相关数据。
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导入那些列
-type:默认是json类型,可以导出csv类型
-o:指明要导出的文件名称,如果不指定,则导出到标准输出
-q:查询过滤器,可以输入一个json,从而导出查询后的结果
上面的常用参数还有对应的长参数选项,例如-h也可以输入--host代替。参数的详细介绍,可以通过mongoexport --help获取到。
1、导出数据库new下面的test集合的number字段,命令如下:
mongoexport --port=27016 -u "yeyz" --authenticationDatabase "admin" -p "123456" -d new -c test --fields=number -o /data/test.json 2021-02-23T22:09:52.481+0800 connected to: localhost:27016 2021-02-23T22:09:52.512+0800 exported 2000 records
我们看下导出的结果:
{"_id":{"$oid":"6006c46993a711b384cc8c92"},"number":1000.0}
{"_id":{"$oid":"6006c46993a711b384cc8c93"},"number":1001.0}
{"_id":{"$oid":"6006c46993a711b384cc8c94"},"number":1002.0}
{"_id":{"$oid":"6006c46993a711b384cc8c95"},"number":1003.0}
{"_id":{"$oid":"6006c46993a711b384cc8c96"},"number":1004.0}
{"_id":{"$oid":"6006c46993a711b384cc8c97"},"number":1005.0}
{"_id":{"$oid":"6006c46993a711b384cc8c98"},"number":1006.0}
{"_id":{"$oid":"6006c46993a711b384cc8c99"},"number":1007.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9a"},"number":1008.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9b"},"number":1009.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9c"},"number":1010.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9d"},"number":1011.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9e"},"number":1012.0}
可以看到,即使我们只指定了number字段,也会自动为我们导出_id字段,由此可以得出结论,:如果导出的格式是json类型的,_id字段是默认导出的。默认导出的类型是json类型,如果我们想导出csv类型,可以增加--type=csv参数。添加了这个参数之后,结果如下:
number 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011
可以看到,就不会自动的输出_id这个字段了。这个可能也是一个值得讨论的点。我认为可能是这个工具的一个小bug,csv类型不输出_id字段,而json类型输出_id字段。
2、导出某个特定的查询结果,例如导出number=10的那条记录:
[root@VM-0-14-centos ~]# mongoexport --port=27016 -u "yeyz" --authenticationDatabase "admin"
-p "123456" -d new -c test --type=csv -q {"number":10} --fields=number -o /data/test.json
2021-02-23T22:38:18.319+0800 connected to: localhost:27016
2021-02-23T22:38:18.321+0800 exported 1 record
可以直接在-q参数后面跟查询条件。
今天的操作是在分片集群上进行操作的,一共7个分片,我导出了3亿多条数据,单个分片上大概5000w条数据吧,每条数据导出2个字段,每个分片上的导出时间大约在2个小时左右。
机器硬件配置:
当然,这个值只是个经验值,如果你的导出的字段比较多的话,或者字段的长度比较长,可能这个值没有太多的参考意义。在实际进行数据导出的时候,发现执行导出的mongodb服务器负载有一定上升,内存使用率有一定上升,但是没有特别明显性能抖动,整个过程不会锁数据库,所以还是比较安全的。
线上操作的时候,尤其是针对敏感的业务,为了最大程度上降低对业务的影响,如果你是在mongos上执行数据导出,建议先保证这个mongos对业务不可见,执行导出之后,在重新对外提供服务;如果你是在mongod上进行数据导出,则最好选择secondary节点进行,避免对线上业务的影响。
mongodb还有一个工具,叫mongoimport,可以将mongoexport导出的数据导入到mongodb数据库中,下面是一个mongoimport的命令:
[root@VM-0-14-centos ~]# mongoimport --port=27016 -u "yeyz" --authenticationDatabase "admin"
-p "123456" -d new -c test1 --type=csv --fields=number --file=/data/test.csv 2021-02-23T22:44:21.930+0800 connected to: localhost:27016 2021-02-23T22:44:22.146+0800 imported 2001 documents
mongoimport的整个操作类似insert操作,参数方面和mongoexport大同小异,唯一多的比较重要的参数就是writeconcern的值,这个值设置的级别越高,那么导出数据的时间就越慢,但是数据安全性会越高。详细内容请看官方文档对writeconcern的描述。
关于MongoDB mongoexport工具的分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识,想要了解更多的MongoDB内容大家可以关注其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
修复mongodb的方法:1、首先停止mongodb服务,删除mongodb.log;2、删除mongodb进程文件;3、把数据重新读一遍,然后写到另一个库中,就可以完成修复。
MongoDB数据库与传统的关系型数据库相比,它具有操作简单、完全免费、源码公开等特点,这使MongoDB产品广泛应用于各种大型门户网站和专业网站。由于MongoDB连接并不支持HTTP协议,所有你不能直接通过浏览器访问MongoDB,下面详细介绍MongoDB中连接字符串的编写
翻阅数据在MongoDB中是非常常见的操作,但是有很多小伙伴们都不知道MongoDB如何实现快速翻页,那么今天小编就为大家详细介绍MongoDB快速翻页的方法。
MongoDB如何实现MapReduce聚合?本文今天来给大家讲解下Mongodb需要怎么实现MapReduce聚合的内容,如果你需要深入了解这方面的知识点,可以看一看小编所整理的资料,相信你一定会喜欢的。
mongodb复制集搭建步骤:1、为不同节点创建不同的db文件夹;2、启动三个节点;3、连接主节点,并启动副本集;4、添加从节点,仲裁节点;5、测试复制集secondary节点数据复制功能;6、测试复制集主从节点故障转移功能。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008