【发布时间】:2018-01-13 20:50:10
【问题描述】:
假设您有一个网站,人们可以在其中发布他们的广告。因此,每个广告都有一些选定的属性,例如汽车有不同的发动机类型、齿轮、颜色等。用户在提交列表之前选择这些属性。 我将选定的属性以 jsonb 格式存储在列表表中,查看数据列:
.
因此,每个列表都包含如下数据:
{
"properties":[
{
"id":"1",
"value_id":"1"
},
{
"id":"2",
"value_id":"5"
},
{
"id":"3",
"value_id":"9"
},
{
"id":"4",
"value":"2.0"
},
{
"id":"7",
"value":"2017"
},
{
"id":"6",
"value":"180.000"
}
]
}
现在,问题是:
1) 如何通过 json 中的 id 和 value 过滤列表?例如,显示 id = 2 并且它的值 = 5 并且 id = 3 并且它的值 = 9 的列表,依此类推。我不需要OR,我需要AND。因此,按多个 id 和 value 过滤数据。
2) 第一点 + 比较 id 和 value 的能力(大于或小于)。
【问题讨论】:
-
从示例看来,您在 jsonb 中存储的应该是单独的表。
-
@Justinas Marozas,在一个单独的表中,我有这些属性的翻译和其他元数据。那是因为网站有多种语言。我将这些值和 id 加入到其他表中。
-
但是你为什么要使用 jsonb 来处理这些具有规则结构的数据呢?为什么不单独的三列表(完整的 FK)?甚至是像
array['{"id":"1","value_id":"1"}'::jsonb, '{"id":"2","value_id":"5"}', ...]这样的jsonb数组?
标签: sql postgresql jsonb