ruby-on-rails 查询嵌套的jsonb Postgres列

bbuxkriu  于 2023-02-10  发布在  Ruby
关注(0)|答案(1)|浏览(163)

我有一个jsonb类型的metadata列。
我知道如何检查它是否包含特定的密钥:

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

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

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

lymnna71

lymnna711#

好吧,只是找到了一个办法:

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")

相关问题