首页 > 解决方案 > 在 Postgres 12 中更新整个 JSONB 对象

问题描述

我很难用新的 JSONB 对象替换列config中的 JSONB 对象。

根据 Postgres (12) 文档,应该使用jsonb_set它来更新现有的 JSON 记录:我正在尝试用以下指令替换现有的 JSONB:

UPDATE table SET config=jsonb_set(config, '{config}', '{"newKey":"newValue"}') WHERE myUpdateCondition;

问题是,这对夫妇{"newKey":"newValue"}已成功添加,config但之前的 JSONB 仍然存在于config列中:我的目标是完全更新configjust {"newKey":"newValue"},不留下之前的 JSONB。

我正在阅读jsonb_delete但我没有在官方文档中找到它。

如何config通过不保留以前的 JSONB 对象并将其完全替换为新的 JSONB 对象来更新 JSONB 列?

标签: postgresqljsonbpostgresql-12

解决方案


我的目标是只用 {"newKey":"newValue"} 完全更新配置,不留下以前的 JSONB。

然后只需分配新值:

UPDATE table 
  SET config= '{"newKey":"newValue"}'
WHERE ...;

推荐阅读