mongotranslate
MongoDB工具 >MongoDB BI连接器 >参考 > 文档关系定义语言
文档关系定义语言(DRDL
)定义了MongoDB模式的关系视图。
mongodrdl
从您的MongoDB集合中抽取文档样本,并DRDL
从这些文档中获取文件。
mongosqld
然后使用DRDL
文件中定义的架构允许MySQL客户端查询您的MongoDB数据。
BI Connector将始终包含相同数据类型的字段映射到关系模型中。模式生成专门处理以下情况:
数字 | BI Connector使用与样本文档匹配的最精确的数字类型。 如果集合中的字段始终具有相同的数据类型,则BI Connector将使用该类型。 如果集合中的字段可以包含浮点值或整数,则BI Connector使用type |
---|---|
日期 | BI Connector将任何类型的字段都data_date 视为
SQL timestamp 类型。 |
时间戳记 | BI Connector会忽略任何类型的字段data_timestamp 。 |
对象ID | BI Connector将类型的任何字段都data_oid 视为SQL类型varchar 。 |
UUID | BI Connector将UUID类型的任何字段都视为SQL类型
varchar 。 |
地理空间 | 如果集合包含 地理空间索引,则BI Connector会将索引的字段映射到一个数字经纬度坐标数组。 有关示例,请参见地理空间数据。 注意 从视图读取时,BI Connector无法识别地理空间字段。 |
异质场 | 如果字段包含不一致的类型,则BI Connector将选择采样最频繁的类型。 如果一个字段可以包含一个类型或该类型的数组,则生成的模式将始终指定该字段包含一个数组。 也可以看看 |
BI Connector将嵌入的文档映射到具有.
分隔符的简单字段,使它们的显示类似于您在MongoDB查询中使用点符号引用它们的方式。
尽管Tableau正确地引用了标识符,但是在临时SQL表达式中,您必须对每个包含.
字符或大小写混合的标识符加双引号。
考虑以下文档:
mongodrdl
在包含此文档的集合上运行会在生成的架构中产生以下字段:
_id |
numeric |
familyName |
varchar |
hometown |
varchar |
address.street |
varchar |
address.city |
varchar |
address.state |
varchar |
address.zip |
varchar |
members_since |
timestamp |
BI Connector使用两个集合将数组公开给商业智能工具:一个集合不包含数组,另一个集合每个数组元素包含一个文档。
如果mongodrdl
在名为的集合上运行,该集合families
包含以下文档:
这将产生以下三个表:
families
_id |
numeric |
familyName |
varchar |
hometown |
varchar |
families_familyMembers
_id |
numeric |
familyMembers.age |
numeric |
familyMembers.firstname |
varchar |
familyMembers_idx |
numeric |
families_familyMembers_attributes
_id |
numeric |
familyMembers.attributes.name |
varchar |
familyMembers.attributes.value |
varchar |
familyMembers.attributes_idx |
numeric |
familyMembers_idx |
numeric |
您可以将这些表连接在一起,以非规范化格式查看数据。例如,您可以使用以下查询列出上述架构中命名的人及其家庭信息:
如果为提供--preJoined
选项mongodrdl
,BI Connector将包含文档中的字段添加到每个数组元素的文档中,从而“预连接”表。
在上一个示例中,表将包含以下附加列:
families_familyMembers
familyName |
varchar |
hometown |
varchar |
families_familyMembers_attributes
familyMembers.age |
numeric |
familyMembers.firstname |
varchar |
familyMembers_idx |
numeric |
familyName |
varchar |
hometown |
varchar |
您可以将类型列添加mongo.Filter
到DRDL
文件中的集合
。此列类型允许您执行自定义
$ match查询。
例如,给定以下架构描述了一个点云,其中最多包含三个组件:
您可以使用以下查询选择三维点: