Обновить объект jsonb в postgres - PullRequest
0 голосов
/ 08 марта 2020

Один из моих столбцов - jsonb и имеет значение в формате. Ниже приведено значение одной строки столбца.

{
    "835": {
        "cost": 0, 
        "name": "FACEBOOK_FB1_6JAN2020", 
        "email": "test.user@silverpush.co", 
        "views": 0, 
        "clicks": 0, 
        "impressions": 0, 
        "campaign_state": "paused", 
        "processed":"in_progress", 
        "modes":["obj1","obj2"]
    }, 
    "876": {
        "cost": 0, 
        "name": "MARVEL_BLACK_WIDOW_4DEC2019", 
        "email": "test.user@silverpush.co", 
        "views": 0, 
        "clicks": 0, 
        "impressions": 0, 
        "campaign_state": "paused", 
        "processed":"in_progress", 
        "modes":["obj1","obj2"]
    }
}

Я хочу обновить столбец campaign_info (имя столбца), для внутреннего ключа «обработано» и «модели» идентификатора кампании - «876».

Я пробовал этот запрос:

update safe_vid_info 
set campaign_info -> '835' --> 'processed'='completed' 
where cid = 'kiywgh'; 

Но это не сработало.

Любая помощь приветствуется. Спасибо.

1 Ответ

1 голос
/ 09 марта 2020

Это то, что вы хотите?

jsonb_set(campaign_info, '{876,processed}', '"completed"')

Это обновляет значение по пути "876" > "processed" со значением 'completed'.

В вашем запросе на обновление:

update safe_vid_info 
set campaign_info = jsonb_set(campaign_info, '{876,processed}', '"completed"')
where cid = 'kiywgh'; 
...