sql >> データベース >  >> RDS >> PostgreSQL

jsonb配列を使用したRails(postgres)クエリ

    使用したいのは @>> オペレーター 、左側の値に右側の値が含まれているかどうかをテストします。 「含む」はオブジェクトと配列の両方で機能するため、次のクエリが機能します。

    SELECT * FROM products WHERE specs->'spec_options' @> '["spec1", "spec2"]';
    

    次のようにActiveRecord互換の構文に変換できると思います:

    scope :with_spec_options, ->(spec_options) { 
      where("specs->'spec_option' @> ?", spec_options.to_json) 
    }
    



    1. JPA GenerationType.AUTOは、自動インクリメントの列を考慮していません

    2. JsonMySqlは2つの整数と1つの文字列を取得します

    3. 特定の文字の後のSQLSELECTすべて

    4. jsonbフィールドにインデックスを追加