Postgres是否允许json []或jsonb []?

时间:2016-02-02 22:35:51

标签: json postgresql postgresql-9.5

所以我一直试图在互联网上找到一个运气好的答案。

postgres是否支持在单个字段中包含对象数组,例如

[
  {
    key: value,
    another: value
  },
  {
    key: value,
    value: key
  }
 ]

并将其保存到单个字段?

另外,您将如何执行单INSERTUPDATE

它会是:UPDATE db SET value='[{ key: val }, { key: val }]' ??

2 个答案:

答案 0 :(得分:1)

这取决于你猜对象的定义。

您可以使用JSON:http://www.postgresql.org/docs/current/static/functions-json.html并插入非结构化数据:

# create table test (field json);
CREATE TABLE
# insert into test values ('[1,2,3]');
INSERT 0 1
# insert into test values ('[{"key": "value"}, {"key": "value"}]');
INSERT 0 1
# select * from test;
                field                 
--------------------------------------
 [1,2,3]
 [{"key": "value"}, {"key": "value"}]

还支持数组:http://www.postgresql.org/docs/current/static/arrays.html

答案 1 :(得分:1)

Postgres支持任何有效的json值,包括json数组。 您要使用的是单个json(jsonb)列,而不是Postgres数组:

create table example (id int, val jsonb);
insert into example
values (1, '[{ "name": "aga" }, { "gender": "female" }]');

select * from example;

 id |                   val                   
----+-----------------------------------------
  1 | [{"name": "aga"}, {"gender": "female"}]
(1 row)