我有一个metadata
类jsonb
列。
我知道如何检查它是否包含特定密钥:
obj = Model.create
obj.metadata = {"foo"=>"1", "bar"=>{"baz"=>{"qux"=>2}}}
Model.where("(metadata->'bar') IS NOT NULL") # returns obj
我想知道,我如何检查baz
中是否有obj.metadata['bar']
密钥,如果有的话,我会检查更深层次的嵌套密钥?
答案 0 :(得分:2)
好的,刚刚找到了一条路:
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")