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