天天看点

PostgreSQL merge json的正确姿势

json merge是业务常用的功能,例如网络爬虫,更新合并新爬到的内容。

postgresql 9.5 对json的类型进行了非常大的功能增强,例如支持合并,按key删除,更新key value等。

<a href="https://www.postgresql.org/docs/9.5/static/functions-json.html">https://www.postgresql.org/docs/9.5/static/functions-json.html</a>

以合并为例

以右边的值为准,支持嵌套值的合并。

如果你用的是postgresql9.5 以前的版本,使用jsonbx这个插件也能扩展json的功能.

<a href="http://pgxn.org/search?q=jsonbx&amp;in=extensions">http://pgxn.org/search?q=jsonbx&amp;in=extensions</a>

另外需要提醒一下,因为json合并大多数情况下是会导致合并后的json更大的,所以使用数据库存储时,即使不是多版本的数据库也可能造成行迁移,导致索引的变化。

ps:

阿里云rds pg 9.4的用户,如果要使用以上扩展的jsonb功能,在对应实例的对应数据库中创建这个插件即可。

create extension jsonbx;

如果创建这个扩展报 插件不存在的错误,说明您的pg小版本可能较低,需要先在阿里云rds控制台升级一下对应实例的版本,然后再创建jsonbx插件。