Arrays Postgresql jsonb集合列表的并集

Arrays Postgresql jsonb集合列表的并集,arrays,postgresql,jsonb,Arrays,Postgresql,Jsonb,我希望可以直接做到以下几点: 给定的行包含表单的jsonb { 'a':"hello", 'b':['jim','bob','kate'] } 我希望能够从表中获取所有“b”字段(如从mytable中选择jsondata->“b”),然后形成一个列表,其中包含至少一个“b”字段中出现的所有字符串。(基本上是一个集合并集。) 我该怎么做?或者我最好使用python脚本来提取“b”项,在那里进行集合合并,然后将其存储回其他地方的数据库?这将为您提供json列表“b”中元素的联合集合 SEL

我希望可以直接做到以下几点: 给定的行包含表单的jsonb

{
  'a':"hello",
  'b':['jim','bob','kate']
}
我希望能够从表中获取所有“b”字段(如从mytable中选择jsondata->“b”),然后形成一个列表,其中包含至少一个“b”字段中出现的所有字符串。(基本上是一个集合并集。)


我该怎么做?或者我最好使用python脚本来提取“b”项,在那里进行集合合并,然后将其存储回其他地方的数据库?

这将为您提供json列表“b”中元素的联合集合

SELECT array_agg(a order by a) 
FROM (SELECT DISTINCT unnest(txt_arr) AS a FROM
     (SELECT  ARRAY(SELECT trim(elem::text, '"')
                    FROM   jsonb_array_elements(jsondata->'b') elem) AS txt_arr
      FROM   jtest1)y)z;
查询说明:

  • 从b获取列表,作为
    jsondata->'b'
  • jsonb\u array\u elements()
    函数将JSON数组扩展为一组JSON值
  • trim()
    函数修剪元素中的
    部分
  • 修剪后,使用
    array()
    函数再次转换为数组
  • 通过使用
    unnest()
    函数取消对其进行测试来获取不同的值
  • 最后使用
    array\u agg()
    来形成预期结果

这将为您提供json列表“b”中的元素的联合集

SELECT array_agg(a order by a) 
FROM (SELECT DISTINCT unnest(txt_arr) AS a FROM
     (SELECT  ARRAY(SELECT trim(elem::text, '"')
                    FROM   jsonb_array_elements(jsondata->'b') elem) AS txt_arr
      FROM   jtest1)y)z;
查询说明:

  • 从b获取列表,作为
    jsondata->'b'
  • jsonb\u array\u elements()
    函数将JSON数组扩展为一组JSON值
  • trim()
    函数修剪元素中的
    部分
  • 修剪后,使用
    array()
    函数再次转换为数组
  • 通过使用
    unnest()
    函数取消对其进行测试来获取不同的值
  • 最后使用
    array\u agg()
    来形成预期结果