Запрос столбца jsonb, содержащего массив объектов JSON

я используюPostgreSQL 9.5 и Rails 5. Я хочу запроситьjsonb столбец, показанный ниже, который содержит массив объектов JSON для возврата всего элемента массива JSON, содержащего{"kind":"person"} а также выполнить подсчет.
SQL Я использую показано ниже данных JSON. Выполнение запроса просто возвращает пустой массив.

Я попробовал предложенные вопросыВот а такжеВот.

Это то, что мойjsonb данные выглядят так:

   '[
        {"kind":"person", "filter_term":"56","selected_attr":"customer"},
        {"kind":"email", "filter_term":"marketer","selected_attr":"job_title"}
      ]'

Я хочу, чтобы один из запросов sql возвращал:

                             data
----------------------------------------------------------------------
 '{"kind":"person", "filter_term":"56","selected_attr":"customer"}'
(1 row)

и еще один запрос для возврата массива обратно, чтобы я мог вызывать его в моем приложении, а также перебирать его для создания форм:

 data
----------------------------------------------------------------------
 '[{"kind":"person", "filter_term":"56","selected_attr":"customer"}]'
 (1 row)

Я попробовал этот запрос SQL:

 "SELECT * FROM \"segments\" WHERE (payload @> '[{\"kind\":\"person\"}]')"

Я также попробовал этот запрос:

  "SELECT payload FROM segments WHERE payload @> '[{\"kind\":\"person\"}]'::jsonb;"

Вот третий запрос:

 "SELECT * FROM segments s WHERE s.payload->'\"#{a}\"' @> '[{\"kind\":\"person\"}]';"

Модель:

class Segment < ApplicationRecord
 store_accessor :payload,:kind, :filter_term, :selected_model_name, :selected_attr, :limit, :selected_operator
end

Миграция:

create_table "segments", force: :cascade do |t|

  t.jsonb    "payload",    default: "[]", null: false
  t.index ["payload"], name: "index_segments_on_payload", using: :gin

end

Ответы на вопрос(1)

Ваш ответ на вопрос