[英]Querying nested Json object in postgres
我的表中有一个 jsonb 列,数据采用以下格式:
[
{
"id": 1,
"DATA": {
"a": "XXX",
"key": "value1"
}
},
{
"id": 2,
"DATA": {
"a": "XXX",
"key": "value2"
}
}
]
我想获取key = value1
的行数。 我尝试了一些查询,例如:
select count(t.id)
from my_table t,
jsonb_array_elements(summary->'DATA') elem
where elem->>'key' = 'value1';
它返回 0 行,尽管 db 中有具有该键值对的行。 提前致谢,
使用jsonb_array_elements()
作为列summary
,因为它采用 json 数组的形式。
select count(distinct t.id)
from my_table t
cross join jsonb_array_elements(summary) elem
where elem->'DATA'->>'key' = 'value1';
或者,您可以使用@>
运算符摆脱 function :
select count(t.id)
from my_table t
where summary @> '[{"DATA":{"key":"value1"}}]'
第二种解决方案应该更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.