加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

获取postgresql中所有json字段键的数组

发布时间:2020-12-13 16:04:25 所属栏目:百科 来源:网络整理
导读:我有一个名为user的表,并且在表内有一个名为friends的字段,这个字段是一个json类型,其值如下例所示 {"blockList": {"199": {"date": 1453197190,"status": 1},"215": {"date": 1459325611,"219": {"date": 1454244074,"225": {"date": 1453981312,"229": {"d
我有一个名为user的表,并且在表内有一个名为friends的字段,这个字段是一个json类型,其值如下例所示

{"blockList": {"199": {"date": 1453197190,"status": 1},"215": {"date": 1459325611,"219": {"date": 1454244074,"225": {"date": 1453981312,"229": {"date": 1459327685,"status": 1}},"followers": {"211": {"date": 1452503369},"219": {"date": 1452764627},"334": {"date": 1456396375}},"following": {"215": {"date": 1459325619},"219": {"date": 1453622322},"226": {"date": 1454244887},"229": {"date": 1459327691}},"friendList": {"213": {"date": 1453622410,"type": 2,"214": {"date": 1452763643,"215": {"date": 1455606872,"status": 2},"218": {"date": 1453280047,"219": {"date": 1453291227,"221": {"date": 1453622410,"224": {"date": 1453380152,"225": {"date": 1453709357,"226": {"date": 1454244088,"229": {"date": 1454326745,"status": 2}}}

此记录具有blockList对象,该对象包含被阻止用户的对象.
我需要的是返回像这样的所有块列表键的数组

["199","215","219","225","229"]

任何帮助我怎么能写一个plpgsql函数来做到这一点(返回数组中的所有对象键)?
我是psotgresql的初学者,需要帮助.

解决方法

json_object_keys用于包含json对象的最外层键的集合(因此您需要选择blockList键的对象,您可以使用friends->’blockList’),并使用 array_agg将它们聚合为一个数组:

SELECT ARRAY_AGG(f) 
FROM (
  SELECT json_object_keys(friends->'blockList') f
  FROM users
) u;
┌───────────────────────┐
│       array_agg       │
├───────────────────────┤
│ {199,215,219,225,229} │
└───────────────────────┘
(1 row)

注意:如果您使用的是jsonb类型(而不是json类型),则需要使用jsonb_object_keys函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读