gpt4 book ai didi

ruby-on-rails - PostgreSQL JSONB - 使用单个查询更新所有行的键名

转载 作者:行者123 更新时间:2023-11-29 14:27:57 24 4
gpt4 key购买 nike

我在 PostgreSQL 表中有一个 jsonb 字段,我只想更改键名称,并为其保留相同的值。

目前,我在 Rails 中这样做是这样的:

Event.each do |event|
event.metadata['new_key'] = metadata['old_key']
event.metadata.delete('old_key')
event.save
end

有没有办法使用单个 update_all 查询获得相同的结果?

最佳答案

假设一个顶级键和当前的 PostgreSQL,
您可以通过删除旧 key 并添加新 key 来实现此目的 - 使用从旧 key 复制的值:

UPDATE event
SET metadata = (metadata - 'old_key')
|| jsonb_build_object('new_key', metadata->'old_key')
WHERE metadata ? 'old_key'; -- only where the key exists

db<> fiddle here

关于ruby-on-rails - PostgreSQL JSONB - 使用单个查询更新所有行的键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55733691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com