Postgres 9.2
AndrewDunstanをpgsql-hackersリストに引用します:
ある段階で、(jsonを生成するのではなく)いくつかのjson処理機能が存在する可能性がありますが、9.2には存在しません。
彼があなたの問題を解決するはずのPLV8の実装例を提供することを妨げません。 (リンクは現在無効です。代わりに最新のPLV8を参照してください。)
Postgres 9.3
「json-processing」を追加するための新しい関数と演算子の武器を提供します。
- 新しいJSON機能に関するマニュアル。
- 9.3ページの新機能に関するPostgresWiki。
元の質問への回答 Postgres 9.3の場合:
SELECT *
FROM json_array_elements(
'[{"name": "Toby", "occupation": "Software Engineer"},
{"name": "Zaphod", "occupation": "Galactic President"} ]'
) AS elem
WHERE elem->>'name' = 'Toby';
高度な例:
- JSONデータ型のレコードのネストされた配列とのクエリの組み合わせ
大きなテーブルの場合は、パフォーマンスを向上させるために式インデックスを追加することをお勧めします。
- JSON配列内の要素を検索するためのインデックス
Postgres 9.4
jsonb
を追加します (「バイナリ」の場合はb、値はネイティブのPostgresタイプとして保存されます)両方のさらに多くの機能 タイプ。上記の式インデックスに加えて、jsonb
GIN、btree、ハッシュインデックスもサポートしており、GINはこれらの中で最も強力です。
-
json
のマニュアル およびjsonb
データ型と関数。 - 9.4ページのJSONBに関するPostgresWiki
マニュアルは、次のことを示唆しているところまで行きます:
一般に、ほとんどのアプリケーションはJSONデータを
jsonb
として保存することを好むはずです 、オブジェクトキーの順序に関するレガシーの仮定など、非常に特殊なニーズがない限り。
大胆な強調鉱山。
パフォーマンスは、GINインデックスの一般的な改善から恩恵を受けます。
Postgres 9.5
完全なjsonb
関数と演算子。 jsonb
を操作する関数を追加します 所定の位置に表示されます。
- Postgres9.5のリリースノートの主な朗報。