当前位置: 首页 > 知识库问答 >
问题:

Postgresql:在json数组对象中追加元素

魏鸿禧
2023-03-14

我将下面的jsonb数据存储在如下的表列中:

'{"info":[
    {
        "database": "Oracle",
        "company" : "Oracle"
    },
    {
        "database":"Sql Server",
        "company" :"Microsoft"
    },
    {
        "database":"DB2",
        "company" :"IBM"
    }
]}'

我需要向json数组中的所有对象添加一个元素“License”:“Property”,如下所示:

'{"info":[
    {
        "database": "Oracle",
        "company" : "Oracle",
        "License" : "Proprietary"
    },
    {
        "database":"Sql Server",
        "company" :"Microsoft",
        "License" : "Proprietary"
    },
    {
        "database":"DB2",
        "company" :"IBM",
        "License" : "Proprietary"
    }
]}'

我在这里添加了sql小提琴链接:https://dbfiddle.uk/?rdbms=postgres_11

提前谢谢。

共有1个答案

狄玉书
2023-03-14

您需要分别对每个数组元素调用set_jsonb,使用jsonb_array_elements获取值,并使用json_agg将它们聚合回json数组:

UPDATE test
SET data = jsonb_set(data, '{info}', (
  SELECT jsonb_agg(el || '{"License" : "Proprietary"}')
  FROM jsonb_array_elements(data -> 'info') el
));

(更新了数据库调整演示)

 类似资料:
  • 问题内容: 我有一个从JSON文件读取的JSON格式对象,该对象包含在一个名为teamJSON的变量中,如下所示: 我想向数组添加一个新项,例如 最后 在写回文件之前。什么是添加到新元素的好方法?我接近了,但是所有双引号都被转义了。我一直在寻找一个很好的答案,但是没有一个案例能解决这个问题。任何帮助表示赞赏。 问题答案: JSON 只是一种 表示法 ;进行所需的更改,以便可以将更改应用于本机 Ja

  • 我已将上述格式的json对象存储在postgresql数据库中。每个对象都包含有关某个学生的信息以及注册信息。我在数组中具有嵌套数组的复杂对象。我试图选择“信息”数组中的所有元素。我尝试使用以下查询: 此查询不起作用,并出现以下错误:“无法在标量上调用json\u array\u元素”。是否有其他查询可用于提取嵌套数组“info”的元素??

  • 本文向大家介绍在PHP中,如何将对象元素添加到数组?,包括了在PHP中,如何将对象元素添加到数组?的使用技巧和注意事项,需要的朋友参考一下 代码如下- 示例 输出结果 这将产生以下输出- 创建对象,然后将其推到数组的末尾(以前存在)。 另类

  • 我正在尝试向后端发送一个JSON对象。基本上,我要做的是获得两个文本字段的输入,然后是所有选定文本框的列表。我的javascript代码如下所示: 我还不是javascript方面的专家,但从我在其他Anwer和帖子中发现的情况来看,这是我可以组合起来的,我认为它实际上可以工作。后端部分工作正常,正如我用PostMan测试的那样,非常正常。这就是JSON,我;我是邮递员寄来的,看起来像: Java

  • 我正在尝试向数组中添加一个元素,并保持所有现有元素不变。目前,每当我添加时,它只会将原始数组更改为添加的元素。 我的代码如下: 添加当我尝试转储它们时,即使我添加了多个元素,它也只显示一个元素。返回数组中当前项的函数: 我正在以以下方式添加项目: