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类型的函数和操作符的资料请见这里。
标题:Nosql in postgresql
作者:faywong8888
地址:https://blog.fay.wang/articles/2025/08/10/1754806336446.html