更新多个jsonb值

时间:2017-10-02 11:43:01

标签: node.js postgresql

我正在尝试创建一个cron来每月运行以更新jsonb字段的某些键,在带有postgres数据库的ndoe应用程序中。

在我的数据库中,我有一个jsonb字段,其中包含“disk_alert”,“temepratures_alert”,“consumptions_alert”之类的键,我想做类似的事情

Postgres的:

UPDATE devices SET    
    data=jsonb_set(data::jsonb,'{disk_alert}','false'::jsonb,true), 
    modified_date=NOW() 
WHERE id=$1 AND NOT deleted;

节点:

client.query("UPDATE devices SET data=jsonb_set(data::jsonb,'{disk_alert}','false'::jsonb,true), modified_date=NOW() WHERE id=$1 AND NOT deleted", [deviceId]

但是如何添加其他键“consumptions_alert”和“temperature_alert”?我读了一些关于使用cocnatenation ||的内容运营商,但如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以像这样使用连接运算符:

UPDATE devices SET 
    data = data::jsonb || '{"disk_alert": false, "temepratures_alert": false}',
    modified_date = NOW() 
WHERE id=$1 AND NOT deleted;