Postgres 9.2
我在pgsql-hackers列表中引用了Andrew
Dunstan:
在某个阶段可能会有一些json处理(与json生成相反)功能,但在9.2中没有。
并不能阻止他提供应该解决您的问题的PLV8示例实现。
Postgres 9.3
提供大量新功能和运算符,以添加“ json-processing”。
- 有关新JSON功能的手册。
- 有关第9.3页中的新功能的Postgres Wiki。
- @Will 在以下评论中发布了指向博客的链接,该博客演示了新的操作员。
Postgres 9.3中 原始问题 的答案:
SELECt *FROM json_array_elements( '[{"name": "Toby", "occupation": "Software Engineer"}, {"name": "Zaphod", "occupation": "Galactic President"} ]' ) AS elemWHERe elem->>'name' = 'Toby';高级示例:
- 使用JSON数据类型的记录嵌套数组查询组合
对于更大的表,您可能需要添加一个表达式索引以提高性能:
- 在JSON数组中查找元素的索引
PostgreSQL 9.4
添加 jsonb
(b为“二进制”,值存储为本地Postgres类型),并且 两种 类型 都具有
更多功能。除了上面提到的表达式索引外,
jsonb还支持GIN,btree和hash索引,其中GIN是最有效的。
- 本手册
json
以及jsonb
数据类型和功能。 - 第9.4页的JSONB上的Postgres Wiki
该手册建议如下:
通常, 大多数应用程序应该将JSON数据存储为
jsonb,除非有非常特殊的需求,例如关于对象键顺序的传统假设。
大胆强调我的。
性能从GIN索引的总体改进中受益。
Postgres 9.5
完整的
jsonb功能和操作员。添加更多功能以
jsonb进行就地操作和显示。
- Postgres 9.5的发行说明中的主要好消息。



