[英]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.