1. ホーム
  2. json

[解決済み] PostgresでJSONフィールドにインデックスを作成するには?

2022-06-03 11:09:37

質問

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

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

ERROR: データ型 json には、アクセス メソッド用のデフォルトの演算子クラスがありません。 HINT: インデックスに演算子クラスを指定するか、データ型にデフォルトの演算子クラスを定義する必要があります。 データ型のデフォルトの演算子クラスを定義する必要があります。

どのように解決するのですか?

見つかりました。

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

コメントにもあるように、ここでの微妙な差は ->> ではなく -> . 前者は値をテキストとして返し、後者はJSONオブジェクトとして返します。