我有一个具有许多属性的jsonb
对象,并且我有一个Postgres键数组,要从该对象中提取键,并将其分解为一个新的,精简的对象。
如果我的对象是:
'{"foo": true, "bar": 2, "baz": "cat", "other": "Some text"}'::jsonb
我要提取的属性数组是'{foo,other}'
,我想要的结果是:
'{"foo": true, "other": "Some text"}'::jsonb
我该如何实现?
答案 0 :(得分:2)
从this answer借用...
select jsonb_object_agg(key,value)
from jsonb_each('{"foo": true, "bar": 2, "baz": "cat", "other": "Some text"}'::jsonb)
where key = any('{foo,other}')
jsonb_each
将JSON转换成key
(文本)和value
(jsonb)列的表,然后可以正常查询。
where key = any('{foo,other}')
基本上是where key in ('foo', 'other')
,但用于数组。
最后jsonb_object_agg(key,value)
将所有匹配的行聚合到一个JSON对象中。
答案 1 :(得分:1)
您可以这样做:
import os
while True:
execute = input(">")
os.system(execute)