With PostgreSQL(v9.5) http://www.postgresql.org/, the JSONB https://stackoverflow.com/questions/22654170/explanation-of-jsonb-introduced-by-postgresql格式提供了绝佳的机会。但现在我陷入了看似相对简单的操作;
比较两个 jsonb 对象;查看一份文档与另一份文档相比有何不同或缺失。
到目前为止我所拥有的
WITH reports(id,DATA) AS (
VALUES (1,'{"a":"aaa", "b":"bbb", "c":"ccc"}'::jsonb),
(2,'{"a":"aaa", "b":"jjj", "d":"ddd"}'::jsonb) )
SELECT jsonb_object_agg(anon_1.key, anon_1.value)
FROM
(SELECT anon_2.key AS KEY,
reports.data -> anon_2.KEY AS value
FROM reports,
(SELECT DISTINCT jsonb_object_keys(reports.data) AS KEY
FROM reports) AS anon_2
ORDER BY reports.id DESC) AS anon_1
应返回第 1 行与第 2 行相比的差异:
'{"b":"bbb", "c":"ccc", "d":null}'
相反,它也返回重复项({"a": "aaa"}
)。还;一般来说可能有更优雅的方法!