mysql 嵌套查询_阿里云DLA新功能来袭 查询MongoDB嵌套字段更方便

背景

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

原文链接

更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区 - 知乎

本文为云栖社区原创内容,未经允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值