天天看點

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插件。