1.Mongod之mongoexport和mongoimport
1.前言
MongoDB的数据的导出/导入是利用mongoexport和mongoimport两个工具来完成的,本质上它们是实现集合中每一条BSON格式的文档记录与本地文件系统上内容格式为JSON或CSV文件的转换的
其中,json格式的文件是按照行组织内容的,每行为一个json对象,所以并不是严格意义上的json格式,它是一种扩展版本的json
csv格式的文件也是按照行组织内容的,第1行为字段名称,每行包含输出的字段值,字段与字段之间使用逗号隔开。
以上导出的两种文件都能使用文件工具直接打开。
2.导出工具mongoexport
2.1 导出json格式文件:通过连接集群mongos导出json格式文件,命令如下:
mongoexport --host=xxx --port=xxx --db=crm --collection=xxx --out=xxx.json
- host:表示要连接的mongod实例进程所在的主机地址。如果从分片集群导出,则host取值为集群mongos的主机地址;如果是从单实例导出,则host取值为该实例所在主机地址,如果是从复制集导出,则host取值为复制集连接字符串,样式为host="replicaSetName/host1:port,host2:port,host3:port"
- port:表示要连接的mongod实例进程所对应的主机端口。如果从复制集导出,这不需要单独传递port参数,因为在host参数中包含了端口
- db:表示要从哪个数据库导出数据
- collection:表示要从哪个集合导出数据
- out:表示将数据导出到那个文件
2.2. 导出CSV格式文件
mongoexport --host=xxxx --port=xxx --db=xxx --collection=xxx --type=csv --fields=xxx1,xxx2... --out=xxx.csv
如果是集群的话,请连接mongos进行导出。。。
这里说一下几个与上面不同的参数:与导出json格式不同
type:表示执行导出的文件格式,默认是json格式
fileds:表示导出的字段,注意这个参数在导出csv格式时一定要加上
noHeaderLine:这边表示去除表头字段信息,只导出数据
2.3 只导出匹配的文件
这里有个需求,就是只导出某一个文档下的部分数据
这里需要的参数就是:qurey
mongoexport --port 27017 -d test -c test --query='{"x":{"$gt":1}}' --out=test.json
这里的意思是:导出集合test中字段为x大于1的所有文档
2.4 从secondary节点导出数据
以上的导出命令,在默认情况下都是从primary节点导出的,如果是分片集群,则从分片复制集中的primary节点导出数据;如果是复制集,则也会从primary节点导出数据,但是为了避免导出数据时对primary节点产生额外的负载,可以通过readPreference参数指定从Secondary节点导出数据,可以加上参数:--readPreference=secondary
3.导入工具mongoimport
mongoimport可以将JSON、CSV或TSV格式文件中的数据导入集合
3.1导入JSON格式文件
mongoimport --host=xxx --port=xxx --db=xxx --collection=xxx --file=xxx.json
3.2导入CSV格式文件
mongoimport --host=xxx --port=xxx --db=xxx --collection=xxx --type=csv --headerline --file=xxx.csv
- type=csv:表示导入的文件类型为CSV格式
- headline:表示导入文件中的第1行是表头,即对应集合中的字段名称,如果不添加该参数,则会将文件中的第一行作为一条文件记录导入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~