2017-02-16 41 views
0

jsonb在這種形式的數據列feeds平展嵌套JSON [B]數組中的Postgres

[{ 
    "id": 99999999, 
    "lang": "pt", 
    "entities": { 
    "urls": [], 
    "media": [{ 
     "id": 123456456, 
     "type": "photo", 
     "id_str": "123456456", 
     "indices": [37, 59], 
    }] 
    }, 
    "favorited": false, 
    "retweeted": false, 
    "truncated": false 
}] 

如何查詢第一media ->> id,因爲它是在一個JSON陣列?這樣的結果是這樣的:

id    media_id 
--------------------------- 
99999999   123456456 

我試過jsonb_array_elements,但似乎無法得到的輸出我想要的,尤其是在media嵌套在另一個數組中的一部分。

回答

0

想通了

SELECT 
    jsonb_array_elements(feeds)->>'id', 
    (((jsonb_array_elements(feeds)->'entities')->'media')->0)->>'id' as media 
FROM mytable 
0
select feeds::jsonb->0->>'entities'->>'media'->0->>'id' from table;