DLA以前对于MongoDB只支持简单类型的映射查询,对于嵌套字段没法直接查询,最近咱们加入了对嵌套字段直接查询的支持,这篇文章给你们介绍一下。mysql
首先咱们在MongoDB里面准备一个带有嵌套数据结构的collection:sql
db.Ha.insert({ id: 1, name: "james", age: 1, details: { city: "hangzhou" } });
这里 details 里面的 city 字段就是一个嵌套的字段。而后咱们来建立一个DLA里面的表:json
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嵌套字段会更方便,更高效。spa
原文连接
本文为云栖社区原创内容,未经容许不得转载。code