2017-09-16 44 views
0

我已經搜索了周圍,但這似乎是一個更常見的查詢JSONB字段的要求比普通,並沒有找到解決方案然而。 我的表有一個jsonb場稱爲「計劃」,其內容如下:Postgres查詢記錄JSONB字段中的對象數組中的任何元素包含數字>或<x

{ 
    days: [ 
     { 
      summary: { 
       total: 100 
      } 
     } 
    ] 
} 

有可能是潛在的日子數組內無限天的對象。是否可以運行一個查詢來選擇至少一個天對象中'total'大於或小於給定數字的所有行?

如果有必要,我可以重新安排表或採取「彙總」數據,並將其放入postgres數組字段。

回答

1

如果我正確理解你的問題,你可以在你jsonb列取得與total所有行​​不等於說101,如下:

SELECT * 
FROM my_table t, 
    LATERAL jsonb_array_elements(plan->'days') days 
WHERE 
    (days->'summary'->>'total')::integer != 101; 
+0

感謝您的答覆。我已經通過將摘要移動到ARRAY []行來解決這個問題,但這可能是一個更簡單的解決方法。我會在某個時候嘗試。 – Henry

相關問題