簡體   English   中英

在Rails中使用postgres json字段更新嵌套鍵

[英]Update nested key with postgres json field in Rails

我一直在嘗試更新以下內容:

{"boxes": {"book": 2, "moving": 2}, "goods": {}}

至 :

{"boxes": {"book_new": 2, "moving": 2}, "goods": {}}

而不使用正則表達式或在ruby中執行此操作。 但似乎有點棘手。 我想添加新密鑰,然后刪除舊密鑰,我對語法不熟悉,在互聯網上找不到很多密鑰。

我能夠向數據中添加新元素,但不能向嵌套框中添加新元素! 像那樣:

Update moves SET data = data::jsonb || '{"bookasas": 2}'   WHERE data ->> 'boxes' LIKE '%book%';

任何幫助表示贊賞。

沒有替換json鍵的功能,因此您應該刪除舊對象並添加新對象:

update moves 
set data = jsonb_set(
    data::jsonb,
    array['boxes'],
    (data->'boxes')::jsonb - 'book' || jsonb_build_object('book_new', data->'boxes'->'book')
    )
where data ->> 'boxes' like '%book%'
returning *;

                         data                         
------------------------------------------------------
 {"boxes": {"moving": 2, "book_new": 2}, "goods": {}}
(1 row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM