arrays - jsonb vs jsonb[] 用于客户的多个地址

标签 arrays postgresql jsonb

在 PostgreSQL 的一个 jsonb 字段中保存多个地址是个好主意。我是 nosql 的新手,我想测试 PostgreSQL 来做到这一点。我不想有另一个包含地址的表,我更喜欢将它放在同一个表中。 但我有疑问,我看到 PostreSQL 有 jsonb 和 jsonb[]。

存储多个地址哪个更好? 如果我使用 jsonb,我想我必须像这样为每个字段添加一个前缀:

"1_adresse_line-1"
"1_adresse_line-2"
"1_postalcode"

"2_adresse_line-1"
"2_adresse_line-2"
"2_postalcode"

"3_adresse_line-1"
"3_adresse_line-2"
"3_postalcode"

等等

是不是用jsonb[]比较好,它是怎么工作的?

最佳答案

使用结构如下的 jsonb(不是 jsonb[]!)列:

select
'[{
        "adresse_line-1": "a11",
        "adresse_line-2": "a12",
        "postalcode": "code1"
    },
    {
        "adresse_line-1": "a21",
        "adresse_line-2": "a22",
        "postalcode": "code2"
    }
]'::jsonb;

不过,与主表相关的常规表是更好的选择。

为什么不用 jsonb[]?看看JSON definition:

JSON is built on two structures:

  • A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
  • An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.

因此,在 jsonb 列中,您可以存储一个对象数组。尝试使用 jsonb 的数组,很可能是对这类数据的误解。我从未见过对此类解决方案的合理需求。

关于arrays - jsonb vs jsonb[] 用于客户的多个地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46015140/

相关文章:

arrays - 从 postgres 表中提取 json 数组给出错误 : cannot extract elements from a scalar

arrays - jsonb 上的 Postgresql 数组交集

javascript - 迭代 JS 对象/数组,如果找到匹配项,则更改值并返回原始对象/数组结构

python - 寻找最小差异

java - 将字符串数组转换为 vector 的最佳方法?

string - 与 JSONB 相关的 PostgreSQL Hibernate-types 数据转换错误

c++ - 如何使用对未知大小数组的引用来调用函数?

SQL 按连续行的 session 对行进行排名

json - 在 PostgreSQL 中合并 JSONB 值?

sql - 带有 MIN(date) 的查询在 20 小时内未完成 : should it be like that, 还是我做错了什么?