【问题标题】:Query nested jsonb Postgres column查询嵌套的 jsonb Postgres 列
【发布时间】:2017-01-28 11:31:40
【问题描述】:

我有一个metadata 类型为jsonb 的列。

我知道如何检查它是否包含特定的键:

obj = Model.create
obj.metadata = {"foo"=>"1", "bar"=>{"baz"=>{"qux"=>2}}}

Model.where("(metadata->'bar') IS NOT NULL") # returns obj

我想知道,如何检查 obj.metadata['bar'] 中是否有 baz 键,如果有,如何检查更深的嵌套键?

【问题讨论】:

    标签: ruby-on-rails postgresql activerecord ruby-on-rails-5 ruby-on-rails-6


    【解决方案1】:

    好的,刚刚找到方法了:

    Model.where("(metadata -> 'bar' ->> 'baz') IS NOT NULL")
    

    如果元数据有更多嵌套的json:

    obj.metadata = {"foo"=>"1", "bar"=>{"baz"=>{"qux"=>2}}}
    

    我想看看there's metadata['bar']['baz']['qux']:

    Model.where("(metadata -> 'bar' -> 'baz' ->> 'qux') IS NOT NULL")
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 2017-02-23
      • 2023-04-03
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多