Postgresql 将字段追加到PSQL jsonb数组

Postgresql 将字段追加到PSQL jsonb数组,postgresql,jsonb,Postgresql,Jsonb,我有一个名为test\u table的表,其结构如下: id | 1 lookup | 166 arguments | {"title": "Title", "name": "XYZ", "address": "1 main street"} 我在这个表中有很多条目遵循类似的结构(为了这个问题,我简化了它) 我想更新某些行(基于ID列表),以便在arguments列中有一个额外字段,这

我有一个名为
test\u table
的表,其结构如下:

id                       | 1
lookup                   | 166
arguments                | {"title": "Title", "name": "XYZ", "address": "1 main street"}
我在这个表中有很多条目遵循类似的结构(为了这个问题,我简化了它)

我想更新某些行(基于ID列表),以便在arguments列中有一个额外字段,这将导致:

id                       | 1
lookup                   | 166
arguments                | {"title": "Title", "name": "XYZ", "address": "1 main street", "county": "County Name", "code": "4XC"}
我尝试了以下操作,但无法使其正常工作:

UPDATE test_table
SET arguments = arguments || '"county": "County Name", "code": "4XC"'::jsonb
WHERE id in (1,2,etc.);
谁能告诉我我做错了什么

这是我收到的错误:

Expected end of input, but found ":"

这不是有效的JSON,您需要在它周围使用
{}

UPDATE test_table
SET arguments = arguments || '{ "county": "County Name", "code": "4XC" }'::jsonb
WHERE id in (1,2,etc.);
为了避免格式问题,并使绑定参数的使用更容易,请使用
jsonb\u build\u object

UPDATE test_table
SET arguments = arguments || jsonb_build_object('county': ?, 'code': ?) )
WHERE id in (1,2,etc.);