繁体   English   中英

将 JSON 对象添加到 Postgres 中的特定键

[英]Add JSON object to an specific key in Postgres

我有一个具有这种结构的 JSON:

[
   {
      "myKey":[
         {
            "value":1
         },
         {
            "value":2
         }
      ],
      "secondKey":[
         {
            "value":1
         },
         {
            "value":2
         }
      ]
   }
]

我需要添加评估密钥的对象,例如,为myKey添加:

[
   {
      "myKey":[
         {
            "value":1
         },
         {
            "value":2
         },
         {
            "new value":3
         }
      ],
      "secondKey":[
         {
            "value":1
         },
         {
            "value":2
         }
      ]
   }
]

考虑到我只是使用 postgres 选择和程序,正确的方法是什么。

jsonb_set与与{"new value":3}连接的原始myKey数组一起使用。 CTE t(j)仅用于演示。

with t(j) as ( values (
'[{
   "myKey":[{"value":1}, {"value":2}], "secondKey":[{"value":1},{"value":2}]
 }]'::jsonb))

SELECT jsonb_set(j, '{0, myKey}', j->0->'myKey' || '{"new value":3}')
FROM t;

结果:

[
  {
    "myKey": [
      {
        "value": 1
      },
      {
        "value": 2
      },
      {
        "new value": 3
      }
    ],
    "secondKey": [
      {
        "value": 1
      },
      {
        "value": 2
      }
    ]
  }
]

您可能更喜欢使用jsonb_build_object('new value', 3)而不是'{"new value":3}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM