更新时如何在postgresql jsonb字段中附加对象

San*_*ani 0 sql postgresql postgresql-9.4

我想更新我的 jsonb 字段,它存储对象数组。我想在其中添加新对象。

CREATE TABLE justjson ( id INTEGER, doc JSONB);
INSERT INTO justjson VALUES ( 1, '[
  {
    "name": "abc",
    "age": "22"
  },
  {
    "name": "def",
    "age": "23"
  }
]');
Run Code Online (Sandbox Code Playgroud)

然后像

select doc from justjson;

doc
[{"age": "22", "name": "abc"}, {"age": "23", "name": "def"}]
Run Code Online (Sandbox Code Playgroud)

现在我想在这个 jsonb 中附加新对象

{"age": "45", "name": "xyz"}
Run Code Online (Sandbox Code Playgroud)

如何更新此字段?

我的输出如

doc
    [{"age": "22", "name": "abc"}, {"age": "23", "name": "def"},{"age": "45", "name": "xyz"}]
Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 5

使用连接运算符||将元素附加到数组:

UPDATE justjson
SET doc = doc || '{"age": "45", "name": "xyz"}'::jsonb
WHERE is = 1;
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供此代码片段,它可能会提供一些有限的即时帮助。一个正确的解释 [将大大提高](//meta.stackexchange.com/q/114762) 通过展示*为什么*这是一个很好的问题解决方案,它的长期价值,并将使它对未来的读者更有用其他类似的问题。请[编辑]您的答案以添加一些解释,包括您所做的假设。 (2认同)