[英]Query nested jsonb Postgres column
I have a metadata
column of type jsonb
.我有一个jsonb
类型的metadata
列。
I know how to check whether it contains a specific key:我知道如何检查它是否包含特定的键:
obj = Model.create
obj.metadata = {"foo"=>"1", "bar"=>{"baz"=>{"qux"=>2}}}
Model.where("(metadata->'bar') IS NOT NULL") # returns obj
I wonder, how would I check if there is baz
key in obj.metadata['bar']
and, if I had, for deeper nested keys?我想知道,我将如何检查obj.metadata['bar']
是否有baz
键,如果有,如何检查更深的嵌套键?
Ok, just found a way:好的,刚刚找到了一个方法:
Model.where("(metadata -> 'bar' ->> 'baz') IS NOT NULL")
if metadata has more nested json:如果元数据有更多的嵌套 json:
obj.metadata = {"foo"=>"1", "bar"=>{"baz"=>{"qux"=>2}}}
and I would want to see, if there's metadata['bar']['baz']['qux']
:我想看看,如果there's metadata['bar']['baz']['qux']
:
Model.where("(metadata -> 'bar' -> 'baz' ->> 'qux') IS NOT NULL")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.