node.js和postgresql更新嵌套的JSON密钥
我在我的数据库中有一个名为“json”的表,有2列:“id”和“data”
目前只有一行存储在它里面,有1个id和一个JSON结构作为数据:
{ "elements": { "nodes": [ { "data": { "id": "n0", "name": "Name here", "color": "#FFFFFF" } }, { "bob": "hello" } ] } }
我需要更新JSON的一个键:“名称在这里”必须成为“更新”
这是我试过的:
db.query("UPDATE json SET $1 WHERE data->'elements'->'nodes'->0->'data'->'name'=$2", ['updated', 'Name here'])
但我得到一个错误:
在“'更新'”处或附近的语法错误
当使用Postgres JSON导航器时,使用text
检索导航器终止您的链是非常重要的->>
如果您想进行比较:
UPDATE json SET $1 WHERE data->'elements'->'nodes'->0->'data'->>'name'=$2
这应该允许比较text
而不是json
text
。
我想你可能也可以用#>>
来一口气挖掘整个过程:
UPDATE json SET $1 WHERE data#>>'{elements,nodes,0,data,name}'=$2