MongoDB 嵌套子文档导入数据库

MongoDB的嵌套子文档通过一对多关系,灵活的多字段记录了不同属性。如有集合 users, 其子文档friends下有字段 name, tel,希望数据结构化后导入 mysql 数据库。具体数据如下:

{"_id" :   ObjectId("5f57421c1796b4875dc90187"),
"name" : "jim",
"friends" : [
   {"name":"tom",   "tel":"186123500500"},
   {"name":"jack",   "tel":"181123500511"},
   {"name":"luke",   "tel":"138123500522"},
   {"name":"rose","tel":"189123500533"}
]},

{"_id" :   ObjectId("5f57421c1796b4875dc90188"),
"name" : "jack",
"friends" : [
   {"name":"james",   "tel":"186123500544"},
   {"name":"sam",   "tel":"186123500555"},
   {"name":"peter",   "tel":"186123500566"}
]}
  …

使用集算器, 可将用户的每个 friends 分解成行 ,实现一行变多行后入库。

实现步骤:
1、确定 mysql 数据库下有对应的用户表
user,对应字段为:name, friend, tel。

2、 在集算器中编写脚本user.dfx

A B
1 =mongo_open("mongodb://localhost:27017/local") / 连接 MongDB 数据库
2 =mongo_shell(A1,"user.find(,{_id:0})") / 获取集合 user 数据
3 =A2.news(friends; name:friend,   tel, A2.name) / 将数据结构化
4 =connect("mysql") / 连接 MySql 数据库
5 >A4.update@i(A3, user) / 将数据导入 mysql 数据库下的 user 表
6 >(A1.close(), A4.close()) / 关闭连接
  3、调试执行一下,可以看到格值 A3 为:
A3 friend tel name
tom 186123500500 jim
jack 181123500511 jim
luke 138123500522 jim

4、执行脚本后,在 mysql 数据库查询结果:

a101png