在 Postgres 中展平嵌套的 json[b] 数组
Flattening a nested json[b] array in Postgres
我有 jsonb
列 feeds
,数据格式如下:
[{
"id": 99999999,
"lang": "pt",
"entities": {
"urls": [],
"media": [{
"id": 123456456,
"type": "photo",
"id_str": "123456456",
"indices": [37, 59],
}]
},
"favorited": false,
"retweeted": false,
"truncated": false
}]
如何查询 first media ->> id
因为它在 json 数组中?所以结果是这样的:
id media_id
---------------------------
99999999 123456456
我尝试了 jsonb_array_elements
但似乎无法获得我想要的输出,尤其是 media
嵌套在另一个数组中的部分。
想通了
SELECT
jsonb_array_elements(feeds)->>'id',
(((jsonb_array_elements(feeds)->'entities')->'media')->0)->>'id' as media
FROM mytable
select feeds::jsonb->0->>'entities'->>'media'->0->>'id' from table;
我有 jsonb
列 feeds
,数据格式如下:
[{
"id": 99999999,
"lang": "pt",
"entities": {
"urls": [],
"media": [{
"id": 123456456,
"type": "photo",
"id_str": "123456456",
"indices": [37, 59],
}]
},
"favorited": false,
"retweeted": false,
"truncated": false
}]
如何查询 first media ->> id
因为它在 json 数组中?所以结果是这样的:
id media_id
---------------------------
99999999 123456456
我尝试了 jsonb_array_elements
但似乎无法获得我想要的输出,尤其是 media
嵌套在另一个数组中的部分。
想通了
SELECT
jsonb_array_elements(feeds)->>'id',
(((jsonb_array_elements(feeds)->'entities')->'media')->0)->>'id' as media
FROM mytable
select feeds::jsonb->0->>'entities'->>'media'->0->>'id' from table;