查询 postgresql jsonb 列中的内部字段
Querying against an inner field in postgresql jsonb column
我有一个 jsonb 列,其结构如下:
{
.....other fields,
"a" : {
"b" : {
"c" : "some value",
....other fields
}
.....other fields
},
...other fields
}
我可以有这样的查询,属性是 table MyTable 中的列名:
SELECT * from
MyTable t
WHERE t.properties @> '{"a":{"b":{"c": "some value"}}}';
但是“c”之前的字段可能不同,即我们可以有:
{
.....other fields,
"m" : {
"n" : {
"c" : "some value",
....other fields
}
.....other fields
},
...other fields
}
如何针对这种情况修改我的查询?
如果嵌套总是在同一层,您可以使用 JSON/Path 表达式:
select *
from the_table
where properties @@ '$.*.*.c == "some value"'
我有一个 jsonb 列,其结构如下:
{
.....other fields,
"a" : {
"b" : {
"c" : "some value",
....other fields
}
.....other fields
},
...other fields
}
我可以有这样的查询,属性是 table MyTable 中的列名:
SELECT * from
MyTable t
WHERE t.properties @> '{"a":{"b":{"c": "some value"}}}';
但是“c”之前的字段可能不同,即我们可以有:
{
.....other fields,
"m" : {
"n" : {
"c" : "some value",
....other fields
}
.....other fields
},
...other fields
}
如何针对这种情况修改我的查询?
如果嵌套总是在同一层,您可以使用 JSON/Path 表达式:
select *
from the_table
where properties @@ '$.*.*.c == "some value"'