【问题标题】:how to handle nested fields generated by mongodb collection如何处理由 mongodb 集合生成的嵌套字段
【发布时间】:2015-05-06 19:53:30
【问题描述】:

我是 mongodb 的新手。我将我的 mongodb 集合导出为 csv 文件,以将其导入我的 sql-server。问题是其中一个字段是嵌套的。谁能告诉我如何处理该字段(地址),以便将其正确插入到 sql server 中。所以这就是我的意思

集合是
身份证 |姓名 |工资 |地址                         |
                           |房屋编号 |街道 |城市 |国家|

【问题讨论】:

  • 定义“正确插入”。关系型数据库不支持在一张表中嵌套数据。
  • 我相信我需要将地址字段替换为 HouseNo, Street, City, Country。所以完整的表格看起来像 Id、Name、Salary、HouseNo、Street、City、Country,
  • 您可以使用字符串函数 CHARINDEX 和 SUBSTRING 来解析 Address 的值并在 SQL 表中创建“嵌套”列。

标签: sql-server mongodb csv database-schema database


【解决方案1】:

嵌套子文档是最容易处理的嵌套类型,因为您始终可以将这些子文档展平到顶层文档中。

在您的示例中,Address 子文档可以展开为四个顶级字段:

  • Address - House No
  • Address - Street
  • Address - City
  • Address - Country

您在此展平过程中丢失了一些信息,特别是所有四列都是单个实体的属性的知识。但是,如果您的目标是单个 CSV 文件,这是不可避免的(例如,您可以通过创建单独的 Address 表来避免丢失此信息,但这会导致多个 CSV)。

更棘手的扁平化是当您在 MongoDB 中拥有 数组 值时。这些不能有用地平铺成一张桌子。您可能必须发明许多表格来正确表示信息。

此外,如果你不是绝对在 SQL Server 上销售,我建议查看MoSQL,这是另一个可以将数据从 MongoDB 复制到 Postgres 的开源项目(它不支持数组)。

在这个时代,您不必编写代码来进行翻译。

【讨论】:

  • 我认为该集合没有数组,因为我使用 simba odbc 驱动程序试用版将集合导出到 tableau。它像你说的那样创建了两个表,并通过 id 将它们连接起来以获取完整的数据。我现在正在研究 Slamdata。我被 sql server 卖光了,因为我想使用 ssrs 生成报告。我认为对于 mongodb 没有下降报告工具
猜你喜欢
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多