इस प्रतिक्रिया के लिए पोस्टग्रेज 9.4 की आवश्यकता है आपके उदाहरण डेटा संरचना में आपके पास निम्नलिखित हैं:
2.1.1 :202 > r.column_data
=> {"data1"=>[1, 2, 3], "data2"=>"data2-3", "array"=>[{"hello"=>1}, {"hi"=>2}]}
दुर्भाग्य से, किसी सरणी में किसी तत्व के अस्तित्व की जांच केवल स्ट्रिंग मानों के साथ (मेरी जानकारी के लिए) काम करती है। यदि हमारे पास निम्न डेटा होता, तो हम इसे बिना किसी समस्या के क्वेरी कर सकते थे।
{"data1"=>['1', '2', '3'], "data2"=>"data2-3"}
आइए इसका परीक्षण करें। नोट:पेलोड jsonb है। यह एक जेसन फ़ील्ड के रूप में काम नहीं करेगा।
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">
अधिक जानने के लिए, आप यह लेख