PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Operadores Postgres para tipo de dados JSON usando Rails 4


Esta resposta requer o Postgres 9.4Em sua estrutura de dados de exemplo, você tem o seguinte:
2.1.1 :202 > r.column_data
=> {"data1"=>[1, 2, 3], "data2"=>"data2-3", "array"=>[{"hello"=>1}, {"hi"=>2}]}

Infelizmente, verificar a existência de um elemento em uma matriz só funciona (que eu saiba) com valores de string. Se tivéssemos os seguintes dados, poderíamos consultá-los sem problemas.
{"data1"=>['1', '2', '3'], "data2"=>"data2-3"}

Vamos testar isso. Nota:a carga útil é jsonb. Não funcionará como um campo 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">

Para saber mais, você pode conferir este artigo