背景
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