修改jsonb的属性

Posted 与非朋仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改jsonb的属性相关的知识,希望对你有一定的参考价值。

CREATE FUNCTION jsonb_merge(JSONB, JSONB)

RETURNS JSONB AS $$

WITH json_union AS (

    SELECT * FROM JSONB_EACH($1)

    UNION ALL

    SELECT * FROM JSONB_EACH($2)

) SELECT JSON_OBJECT_AGG(key, value)::JSONB FROM json_union;

$$ LANGUAGE SQL;

 

UPDATE xxx SET data = jsonb_merge(data,‘{"b":3}‘) WHERE id = 1;

SELECT * FROM xxx;

 id |       data      

----+------------------

  1 | {"a": 1, "b": 3}

 

-- append

UPDATE xxx SET data = jsonb_merge(data,‘{"c":4}‘) WHERE id = 1;

SELECT * FROM xxx;

 id |           data      

----+-------------------------

  1 | {"a": 1, "b": 3, "c": 4}

 

 

 

 

CREATE FUNCTION jsonb_merge(JSONB, JSONB)

RETURNS JSONB AS $$

WITH json_union AS (

    SELECT * FROM JSONB_EACH($1)

    UNION ALL

    SELECT * FROM JSONB_EACH($2)

) SELECT JSON_OBJECT_AGG(key, value)::JSONB

     FROM json_union

     WHERE key NOT IN (SELECT key FROM json_union WHERE value =‘null‘);

$$ LANGUAGE SQL;

以上是关于修改jsonb的属性的主要内容,如果未能解决你的问题,请参考以下文章

JSONB:store_model 宝石。修改发布数据的内容

TypeORM jsonb 数组列

检测 jsonb 属性是数组还是对象

从 jsonb 数组包含具有特定属性的元素的表中选择

如何将postgres jsonb字段的属性插入键值表?

PostgreSQL:如何对包括 JSONB 字段的属性求和,并保留表格形状?