Nosql in postgresql

PostgrepSQL 9.4开始支持了jsonb数据类型,从而支持了一部分nosql特性。今天使用了下,简要记录下:

记得在pgadmin中验证下postgresql的版本号:

SELECT version();

确认是9.4以上。

确认之后可以在SQL终端继续感受下:

SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::json;

创建一个jsonb类型的字段:

CREATE TABLE mobile_analysis
(id serial PRIMARY KEY,
datadoc jsonb,
create_at TIMESTAMP WITH TIME ZONE default current_timestamp);

其中datadoc是我想存为json格式的字段的名称,为了支持后续的检索,为其创建索引:

CREATE INDEX idx_mobile_analysis ON mobile_analysis USING gin (datadoc jsonb_path_ops);

其中的jsonb_path_ops是为了支持对jsonb字段的值进行检索,条件过滤(比如包含有特定的key-value对的记录)所必需的。

插入一条测试数据:

INSERT INTO mobile_analysis(datadoc)
VALUES ('{"a": 1, "b":2, "d": "string_val"}');

通过包含条件查询之:

SELECT * FROM mobile_analysis WHERE datadoc @> '{"a":1}'

更多的关于json/jsonb类型的函数和操作符的资料请见这里。