【发布时间】:2019-09-13 16:54:49
【问题描述】:
我正在尝试使用 postgres 中的连接运算符更新其中包含嵌套 json 对象的 jsonb 字段,如 dbfidde
但是,如果我运行以下脚本,它会删除所有其他字段
UPDATE t
SET details = details || '{"name": {"firstname": "newname"},"address":{"city":"newCity"}}'
WHERE details -> 'name' ->>'firstname'='myname'
它从更新的字段中删除"lastname" 字段
我也尝试使用jsonb_set 进行更新,但我不确定如何使用jsonb_set 更新多个属性
【问题讨论】:
-
您能解释一下您要达到的目标吗?据我了解:旧 JSON {"a":"b"} 扩展为 {"a":"c"}。但是比你有两次相同的密钥...
-
您的 dbfiddle 似乎准确地显示了您的要求。您是说当您在真实数据库上执行此操作时,行为会有所不同?
-
@JSpratt 问题中的查询删除了dbfiddle.uk/…中的“lastname”属性
-
@S-Man 我正在尝试在同一查询中更新 name 对象中的 firstname 属性和 address 对象中的 city 属性
标签: postgresql jsonb