Postgres替换JSONB字段内的数组

时间:2017-04-03 18:25:02

标签: json postgresql

我有一个表data字段有JSONB类型,在许多其他数据中,我在notes json值中有一个data键,我存储了一系列音符。

每个音符都有(至少)两个字段:titlecontent

有时我必须用不同的列表替换整个笔记列表,但不影响我的json记录中的任何其他字段。

我试过这样的事情: UPDATE mytable SET data = jsonb_set("data", '{notes}', '[{ "title": "foo1" "content": "bar"'}, { "title": "foo2" "content": "bar2"}]', true) WHERE id = ?

我得到一个例外(通过js包装器) error: invalid input syntax for type json

我应该如何正确使用jsonb_set功能?

1 个答案:

答案 0 :(得分:0)

您的JSON有效负载中有一个迷路单引号和缺少逗号

而不是

[{ "title": "foo1" "content": "bar"'}, { "title": "foo2" "content": "bar2"}]
                  ^                ^                    ^

它应该看起来

[{ "title": "foo1", "content": "bar"}, { "title": "foo2", "content": "bar2"}]