2

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

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

JSON 还是文本?

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

4

1 回答 1

2

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

当您将 json 存储为 时,您不能简单地编写一个查询来匹配键的值TEXT,但是您可以使用内置的 json运算符和函数来做到这一点,并且您可以用它做更多的事情。举个例子,你不能foo_val2作为某个键的值来检索,因为字符串没有键值对,它都是文本。

我学到的艰难方法是,例如,没有对包含运算符进行优化LIKE,因此您仍然需要将 json 解压缩为文本,然后执行搜索 -请参阅我在 StackOverflow 上关于此主题的问题。

总结一下JSON或者JSONB在处理 json 数据时应该是您的首选,因为它可以让您获得您所没有的灵活性TEXT。特别是如果您打算在数据库方面做一些工作,或者您会发现自己愿意这样做。

于 2018-08-13T21:11:19.083 回答