在 Postgres 上保留以下内容的最佳方法是什么?
[{'property':'foo1', 'val': "foo_val"}, {'property': 'foo2', 'val': "foo_val2"}]
JSON 还是文本?
据我所知,JSON 适用于嵌套结构(使用 ->>)。但在这种情况下,它是一个平面结构。将其保留为 JSON 或 TEXT 是否仍然有意义。哪个更容易查询?
最佳答案
无论如何,对于非嵌套结构,我都会使用 JSON
。 Postgres 支持运算符获取、比较、删除键/值对或整个对象。另请进一步阅读有关 JSONB
的内容,因为它可能更适合您的用例,尤其是当您计划对 json 值执行数据库操作并且还想索引特定键时。
当您将 json 存储为 TEXT
时,您不能简单地编写一个查询来匹配键的值,但是您可以使用内置的 json operators and functions 来做到这一点,您还可以用它做更多的事情。例如,您不能将 foo_val2
检索为某个键的值,因为字符串没有键值对,它都是文本。
我从惨痛的教训中了解到,没有针对包含运算符的优化,例如 LIKE
,因此您仍然需要将 json 解压为文本,然后执行搜索 - see my question on StackOverflow关于这个话题。
总结,JSON
或 JSONB
应该是您处理 json 数据时的首选,因为它可以提供您所没有的灵 active 使用 TEXT
。特别是如果您计划在数据库方面做一些工作,或者如果您发现自己愿意这样做。
关于postgresql - JSON 与 TEXT 字段在 Postgres 中保留值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830476/