天天看點

阿裡雲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嵌套字段會更友善,更高效。

Happy DLAing