【问题标题】:how to query jsonb field with arrays inside如何查询带有数组的jsonb字段
【发布时间】:2018-04-17 11:57:55
【问题描述】:

我有一个 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,有人可以指导我如何存档。

【问题讨论】:

    标签: ruby-on-rails postgresql-9.4


    【解决方案1】:

    假设您使用 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)

    【讨论】:

    • @geniuskidkanyi 我以为它只是一个 json,没有看到数组。根据您的需要编辑答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2018-03-25
    • 2015-04-13
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多