共计 797 个字符,预计需要花费 2 分钟才能阅读完成。
背景
DLA 之前对于 MongoDB 只支持简单类型的映射查询,对于嵌套字段无法直接查询,最近我们加入了对嵌套字段直接查询的支持,这篇文章给大家介绍一下。
MongoDB 嵌套字段查询详解
首先我们在 MongoDB 里面准备一个带有嵌套数据结构的 collection:
db.Ha.insert({
id: 1,
name: "james",
age: 1,
details: {city: "hangzhou"}
});
这里 details 里面的 city 字段就是一个嵌套的字段。然后我们来创建一个 DLA 里面的表:
CREATE EXTERNAL TABLE `Ha` (
`id` int,
`name` string,
`age` int,
`city` string
)
TBLPROPERTIES (COLUMN_MAPPING = 'city,details.city;')
注意,我们这里用到了 COLUMN_MAPPING 的功能,它的作用是把用户在 DLA 层面声明的字段名映射到底层 MongoDB 里面的字段名,这里我们把 city 映射到了底层的 details.city 这个嵌套的字段。我们来查一下试试:
mysql> select * from Ha;
+------+-------+------+----------+
| id | name | age | city |
+------+-------+------+----------+
| 1 | james | 1 | hangzhou |
+------+-------+------+----------+
搞定!
总结
这篇文章给大家介绍了一下怎么利用 DLA 去直接查询 MongoDB 里面的嵌套字段,在这个功能出现之前,我们只能把整个嵌套字段映射成一个 string 字段,然后利用 json 函数把要查询的具体嵌套字段拆解出来,有了这个功能之后,查询 MongoDB 嵌套字段会更方便,更高效。
本文作者:Roin
阅读原文
本文为云栖社区原创内容,未经允许不得转载。
正文完