140

PostgreSQL 9.3 Beta 2 (?) では、JSON フィールドにインデックスを作成するにはどうすればよいですか? ->for 演算子を使用して試してみましhstoreたが、次のエラーが発生しました。

 CREATE TABLE publishers(id INT, info JSON);
 CREATE INDEX ON publishers((info->'name'));

エラー: データ型 json にはアクセス メソッド "btree" の既定の演算子クラスがありません ヒント: インデックスの演算子クラスを指定するか、データ型の既定の演算子クラスを定義する必要があります。

4

1 に答える 1

237

見つかった:

CREATE TABLE publishers(id INT, info JSON); 
CREATE INDEX ON publishers((info->>'name'));

コメントで述べたように、ここでの微妙な違い->>->. 前者は値をテキストとして返し、後者は JSON オブジェクトとして返します。

于 2013-07-23T11:25:52.530 に答える