我正在使用Postgres 9.6.1。
我有一个“订单”表,该表的列“ orderData”为JSON类型。
orderData列中的每个记录当前如下所示:
runs=range(1,21)
for i in runs:
Myfile=np.loadtxt("myfile_%s.txt" %i, delimiter=',', unpack=True)
我正在尝试编写一个SQL查询,该查询将键添加到每个数组中的一阶对象。
查询后,orderData列中的每条记录应如下所示:
[{"orderId":1}, {"orderId":2}, {"orderId":3}]
不尝试:
[{"orderId":1, "isFirstOrder": true}, {"orderId":2}, {"orderId":3}]
任何帮助将不胜感激。
答案 0 :(得分:1)
UPDATE orders
SET c = jsonb_set(c, '{0}', c -> 0 || '{"isFirstOrder": true}');
c -> 0
获取数组的第一个元素||
添加新属性jsonb_set
重写元素(如果存在),而{0}
定位数组中的重写位置对于类型json
,没有功能json_set
。因此,您需要将json
数据转换为jsonb
,最后将结果转换为json
:
UPDATE orders
SET c = jsonb_set(c::jsonb, '{0}', c::jsonb -> 0 || '{"isFirstOrder": true}')::json