MongoDB 如何导出 csv文件

将非结构化的 MongoDB 数据转换成结构化的数据,导出成 csv 文件,可供迁移到其它数据库等应用。
如有集合 scores 成绩数据表,含有 subject 嵌套子文档记录各科成绩表,需导出生成 csv 文件。

name   age province subject
zhou gao gao 24 guang xi {"name":   "Chinese","score": 80},
{"name":   "Math","score": 84},
{"name":   "English","score": 84},
{"name":   "Chemic","score": 98}
li chao 16 shan dong {"name":   "Chinese","score": 94},
{"name":   "Math","score": 88},
{"name":   "English","score": 75},
{"name":   "Chemic","score": 73}
yang hao hao 26 guang xi {"name":   "Chinese,"score": 85},
{"name":   "Math,"score": 83},
{"name":   "English ,"score": 64},
{"name":   "Chemic,"score": 71}

使用集算器, 将数据结构化后导出成 csv 文件。

实现步骤:
1、编写脚本 scores.dfx

A B
1 =mongo_open("mongodb://localhost:27017/student") / 连接 MongDB 数据库
2 =mongo_shell(A1,"score2.find(,{_id:0})").fetch() / 获取集合 score 数据
3 =A2.new(name, age, province, (r=subject.(score))(1): Chinese,r(2):   English,r(3): Math, r(4): Chemic) / 数据结构化,每科成绩变成一列
4 >file("D:\\tmp\\exp_data.csv").export@tc(A3) / 导出生成 cvs 文件
5 =A2.news(subject; name:subject,   score, A2.name, age, province) / 数据结构化, 科目成绩对应
6 >file("D:\\tmp\\exp_data2.csv").export@tc(A5) / 导出生成 cvs 文件
7 >A1.close() / 关闭连接
  2、调试执行一下,可看到格值 A3 为:
A3 name age province Chinese English Math Chemic
zhou gao gao 24 guang xi 80 84 24 8
li chao 16 shan dong 94 24 50 32
yang hao hao 26 guang xi 44 11 26 80
格值 A6 为:
A6 subject score name age province
Chinese 80 zhou gao gao 24 guang xi
Math 84 zhou gao gao 24 guang xi
English 24 zhou gao gao 24 guang xi

 

3执行脚本后在D:\tmp 目录下生成两个相应的 csv 文件

a101png

A5 由于科目 subject 下的名称与用户名称同名,将科目的名称改为 subject