2017-09-16 5 views
0

がありますが、これは検索しましたが、これはJSONBフィールドを照会するためのよりユニークな要件であると思われます。まだ。日・アレイ内の潜在的に無限の日のオブジェクトがあるかもしれませんJSONBフィールドのオブジェクト配列内の任意の要素にnumber>または<x

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

: 私のテーブルには、「計画」と呼ばjsonbフィールド、このようになります。その含有量を有​​しています。少なくとも1つの日オブジェクトで、「合計」が指定された数値よりも大きいか、または少ないすべての行を選択するクエリを実行できますか?

必要に応じて、テーブルを並べ替えたり、「要約」データを取得してpostgres配列フィールドに入れることができます。

答えて

1

私が正しくあなたの質問を理解していれば、あなたは次のように、101を言う、と等しくないあなたjsonb列​​にtotalですべての行をフェッチすることができます:返信用

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

感謝を。私はすでに要約をARRAY []行に移動することでそれを解決しましたが、これははるかに簡単な修正であったかもしれません。いつか試してみるよ。 – Henry

関連する問題