2016-12-28 7 views
1

Postges 9.4を使用していて、オブジェクトの配列としてjsonbフィールドを持つテーブルがあります。ここjsonbオブジェクトの配列をループしてオブジェクト内のキーの値を取得する方法Postgres

サンプルフィールドである:この配列分野において

[{"pk": 224, "arbitrary_value": 50, "description": "United States"}, {"pk": 125, "arbitrary_value": 10, "description": "Canada"}]

、2つのオブジェクトが存在します。しかしそれは可変長です。 jsonbフィールドの各オブジェクトに含まれているとして、私はpk値の配列を返すことができるようにする必要がありarray_agg(...)列で

select jsonb 
    , array_agg(...) 
from public.jsonb_data 

は、私はこのようなクエリを持っています。

結果セットには、次のようになります。

| jsonb | array_agg | 
| ----- | --------- | 
| [{"pk": 224, "arbitrary_value": 50, "description": "United States"}, {"pk": 125, "arbitrary_value": 10, "description": "Canada"}] | {224,125} | 

申し訳ありませんが、...このエディタでテーブルを作成する方法がわから

私が利用可能なさまざまなjsonb演算子をいじり試みているではありませんPostgres 9.4では、誰かがそれを持っていれば、私はどんなポインタでも好きです。

答えて

1

ユーレカ!

jsonb_to_recordset()機能を使用して見つかりました。

select primary_key 
    , array_agg(e.pk) 
from public.jsonb_data, jsonb_to_recordset(jsonb_field) as e(pk int) 
group by primary_key 
order by primary_key 

この後、私の完璧な出力ました:これは誰か...

を役に立てば幸い

| Primary Key | jsonb_array | 
| ----------- | ----------- | 
| 1   | {224,152} | 
| 2   | {224,186} | 
| 3   | {224}  | 

をここで

は私が作ったクエリです

関連する問題