2016-09-20 3 views
0

Ich habe eine metadata Spalte des Typs jsonb.Abfrage verschachtelte Jsonb Postgres Spalte

Ich weiß, wie zu überprüfen, ob es einen bestimmten Schlüssel enthält:

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

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

Ich frage mich, wie würde ich überprüfen, ob es baz Schlüssel in obj.metadata['bar'] ist und, wenn ich tiefer verschachtelte Schlüssel hatte,?

Antwort

0

Ok, fand nur einen Weg:

Model.where("(metadata -> 'bar' ->> 'baz') IS NOT NULL") 

wenn Metadaten hat mehr verschachtelte json:

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

und ich würde sehen wollen, wenn there's metadata['bar']['baz']['qux']:

Model.where("(metadata -> 'bar' -> 'baz' ->> 'qux') IS NOT NULL") 
Verwandte Themen