简体   繁体   English

查询嵌套的 jsonb Postgres 列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM