如何查询里面有数组的jsonb字段

how to query jsonb field with arrays inside

我有一个 jsonb 字段,它有一个像这样的数组

[{"odd_id"=>"5328", "team_id"=>"", "event_id"=>"10301952", "odd_type"=>"full_time", "odd_label"=>"X", "odd_value"=>"3.29"}, {"odd_id"=>"5349", "team_id"=>"", "event_id"=>"10299004", "odd_type"=>"full_time", "odd_label"=>"X", "odd_value"=>"3.10"}, {"odd_id"=>"5237", "team_id"=>"2554", "event_id"=>"2020445", "odd_type"=>"full_time", "odd_label"=>"1", "odd_value"=>"2.87"}, {"odd_id"=>"5174", "team_id"=>"669", "event_id"=>"1685560", "odd_type"=>"full_time", "odd_label"=>"2", "odd_value"=>"3.39"}]

我想使用 where 查询列中的 event_id。 顺便说一句,我正在使用 Rails 5 和 PostgreSQL。有人可以指导我如何存档吗?

假设您使用 jsonb 字段 test_field 建立了名为 Test 的模型,其中一个特定值是散列数组,如图所示:

[{"odd_id"=>"5328", "team_id"=>"", "event_id"=>"10301952", "odd_type"=>"full_time", "odd_label"=>"X", "odd_value"=>"3.29"}, {"odd_id"=>"5349", "team_id"=>"", "event_id"=>"10299004", "odd_type"=>"full_time", "odd_label"=>"X", "odd_value"=>"3.10"}, {"odd_id"=>"5237", "team_id"=>"2554", "event_id"=>"2020445", "odd_type"=>"full_time", "odd_label"=>"1", "odd_value"=>"2.87"}, {"odd_id"=>"5174", "team_id"=>"669", "event_id"=>"1685560", "odd_type"=>"full_time", "odd_label"=>"2", "odd_value"=>"3.39"}]

您必须像这样查询数据库:

Test.where('test_field @> ?', [{ 'event_id' => '10301952' }].to_json)