PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Opérateurs Postgres pour le type de données JSON utilisant Rails 4

Cette réponse nécessite Postgres 9.4. Dans votre exemple de structure de données, vous avez ce qui suit :

2.1.1 :202 > r.column_data
=> {"data1"=>[1, 2, 3], "data2"=>"data2-3", "array"=>[{"hello"=>1}, {"hi"=>2}]}

Malheureusement, vérifier l'existence d'un élément dans un tableau ne fonctionne (à ma connaissance) qu'avec des valeurs de chaîne. Si nous avions les données suivantes, nous pourrions les interroger sans problème.

{"data1"=>['1', '2', '3'], "data2"=>"data2-3"}

Testons cela. Remarque :la charge utile est jsonb. Cela ne fonctionnera pas comme un champ JSON.

Dynamic.create(payload: {"data1"=>['1', '2', '3'], "data2"=>"data2-3"})
Dynamic.where("payload -> 'data1' ? '1'").first
=> #<Dynamic id: 8, payload: {"data1"=>["1", "2", "3"], "data2"=>"data2-3"}, created_at: "2014-12-24 02:30:31", updated_at: "2014-12-24 02:30:31">

Pour en savoir plus, vous pouvez consulter cet article