簡體   English   中英

在postgres中查詢嵌套的Json object

[英]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"}}]'

第二種解決方案應該更快。

Db<>小提琴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM