【发布时间】:2021-05-03 19:42:34
【问题描述】:
问题
我有一张这样的桌子:
| product | tags (jsonb) |
|---|---|
| P001 | [{"name": "LX","active": true}, {"name": "TX","active": true}] |
| P002 | [{"name": "LX","active": true}] |
我正在尝试查询此表以获取标签相同的产品列表。
我发现以下内容不足以满足我的查询,因为它将匹配至少带有我查询的标签的所有产品:
SELECT product
FROM product_table
WHERE tags @> '[
{"name": "LX","active": true}
]';
结果
| product |
|---|
| P001 |
| P002 |
所以我需要更精确的匹配,而不是严格到要求数组中标记对象的顺序。例如:
[
{
"name": "LX",
"active": true
},
{
"name": "TX",
"active": true
}
]
-- Interpreted the same as
[
{
"name": "TX",
"active": true
},
{
"name": "LX",
"active": true
}
]
期望的结果
仅与查询中的标签匹配的产品列表。
资源
我用来尝试解决问题的资源列表。
【问题讨论】:
-
发现:当我将运算符 时,反之亦然,我得到不同的行为,这可能对我有利。我认为答案涉及到这一点。
标签: sql postgresql jsonb