2016-02-02 97 views
2

所以我一直在试图在网上找到一个答案0运气。Postgres允许json []或jsonb []吗?

postgres支持在单个字段中有对象数组,例如

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

并将其保存到单个字段?

而且你会如何进行单INSERTUPDATE

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

+3

'JSON []'将是文档的数组。你正在寻找一个包含数组的文档 - 是的,可以用'json' –

回答

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) 
+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

+0

欢呼的答案! –