查询嵌套的 jsonb Postgres 列
Query nested jsonb Postgres column
我有一个 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
键,如果有,嵌套更深的键?
好的,刚刚找到一个方法:
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")
我有一个 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
键,如果有,嵌套更深的键?
好的,刚刚找到一个方法:
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")