2016-09-20 2 views
0

jsonbmetadataカラムがあります。クエリネストされたjsonb Postgresカラム

私はそれが特定のキーが含まれているかどうかを確認する方法を知っている:

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

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

私は深くネストされたキーのために、私が持っていた場合は、obj.metadata['bar']bazキーがあるかどうかを確認してだろうか、疑問に思いますか?

答えて

0

は[OK]を、だけの方法を見つけました:

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") 
関連する問題