JSON与TEXT字段可在Postgres中保存值列表

时间:2018-08-13 20:59:45

标签: postgresql postgresql-json

在Postgres上保留以下内容的最佳方法是什么?

[{'property':'foo1', 'val': "foo_val"}, {'property': 'foo2', 'val': "foo_val2"}]

JSON还是文本?

据我了解,JSON非常适合嵌套结构(使用->>)。但是在这种情况下,它是一个扁平的结构。将其保留为JSON或TEXT是否仍然有意义。哪个更容易查询?

1 个答案:

答案 0 :(得分:1)

无论如何,我都会选择JSON用于非嵌套结构。 Postgres支持操作员获取,比较,删除键/值对或整个对象。还请进一步阅读JSONB,因为它可能更适合您的用例,尤其是如果您打算对json值进行数据库操作并且还希望索引特定键时。

当您将json存储为TEXT时,您不能简单地编写一个查询来匹配键的值,但是您可以使用内置的json operators and functions来做到这一点,您还可以做很多事情用它做。例如,您不能将foo_val2作为某个键的值来检索,因为字符串没有键值对,所以它都是文本。

我很难理解的是,对于包容符运算符没有优化,例如LIKE,因此您仍然需要将json解压缩为文本,然后执行搜索-see my question on StackOverflow关于这个主题。

总结JSONJSONB应该是处理json数据时的首选,因为它可以让您灵活使用TEXT 。尤其是如果您打算在数据库方面进行一些工作,或者发现自己愿意这样做。