我有一个metadata类型的jsonb列。

我知道如何检查它是否包含特定的 key :

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

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

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

最佳答案

好的,找到了一种方法:

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

关于ruby-on-rails - 查询嵌套的jsonb Postgres列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39595822/

10-15 07:27