Postgres 是否允许 json[] 或 jsonb[]?
Does Postgres allow json[] or jsonb[]?
所以我一直在网上寻找答案,运气为0。
postgres 是否支持在单个字段中包含对象数组,例如
[
{
key: value,
another: value
},
{
key: value,
value: key
}
]
并将其保存到单个字段中?
还有你会如何表演单曲INSERT
或UPDATE
会不会是:UPDATE db SET value='[{ key: val }, { key: val }]'
??
我猜这取决于你对对象的定义。
您可以使用 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
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。
postgres 是否支持在单个字段中包含对象数组,例如
[
{
key: value,
another: value
},
{
key: value,
value: key
}
]
并将其保存到单个字段中?
还有你会如何表演单曲INSERT
或UPDATE
会不会是:UPDATE db SET value='[{ key: val }, { key: val }]'
??
我猜这取决于你对对象的定义。
您可以使用 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
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)