在 Postgres 上保留以下内容的最佳方法是什么?
[{'property':'foo1', 'val': "foo_val"}, {'property': 'foo2', 'val': "foo_val2"}]
JSON 还是文本?
据我了解,JSON 适合嵌套结构(使用 ->>)。但在这种情况下,它是一个扁平结构。将其保留为 JSON 或 TEXT 是否仍然有意义。哪个更容易查询?
在 Postgres 上保留以下内容的最佳方法是什么?
[{'property':'foo1', 'val': "foo_val"}, {'property': 'foo2', 'val': "foo_val2"}]
JSON 还是文本?
据我了解,JSON 适合嵌套结构(使用 ->>)。但在这种情况下,它是一个扁平结构。将其保留为 JSON 或 TEXT 是否仍然有意义。哪个更容易查询?
无论如何,我都会选择JSON
非嵌套结构。Postgres 支持操作符获取、比较、删除键/值对或整个对象。还请进一步阅读,JSONB
因为它可能更适合您的用例,特别是如果您计划对 json 值进行数据库操作并且还想索引特定键。
当您将 json 存储为 时,您不能简单地编写一个查询来匹配键的值TEXT
,但是您可以使用内置的 json运算符和函数来做到这一点,并且您可以用它做更多的事情。举个例子,你不能foo_val2
作为某个键的值来检索,因为字符串没有键值对,它都是文本。
我学到的艰难方法是,例如,没有对包含运算符进行优化LIKE
,因此您仍然需要将 json 解压缩为文本,然后执行搜索 -请参阅我在 StackOverflow 上关于此主题的问题。
总结一下,JSON
或者JSONB
在处理 json 数据时应该是您的首选,因为它可以让您获得您所没有的灵活性TEXT
。特别是如果您打算在数据库方面做一些工作,或者您会发现自己愿意这样做。