कैसे करने के लिए क्वेरी की एक सरणी JSONB

0

सवाल

मैं मेज (आदेश) के साथ jsonb[] स्तंभ नाम steps में Postgres db.

मैं बनाने की जरूरत है एसक्यूएल क्वेरी का चयन करने के लिए रिकॉर्ड है, जहां चरण 1 और चरण 2 और चरण 3 ने सफलता की स्थिति

[
 {
  "step_name"=>"Step1",
  "status"=>"success",
  "timestamp"=>1636120240
  },
 {
  "step_name"=>"Step2",
  "status"=>"success",
  "timestamp"=>1636120275
 },
 {
  "step_name"=>"Step3",
  "status"=>"success",
  "timestamp"=>1636120279
 },
 {
  "step_name"=>"Step4", 
  "timestamp"=>1636120236
  "status"=>"success"
  }
]

तालिका संरचना आईडी | नाम | कदम (jsonb)

arrays jsonb postgresql sql
2021-11-18 10:35:40
2

सबसे अच्छा जवाब

1

'सामान्य' steps की एक सूची में JSON वस्तुओं और जाँच करें कि क्या उनमें से हर एक "status":"success". BTW, अपने उदाहरण के लिए मान्य नहीं है JSON. सभी => के लिए जगह की जरूरत के साथ : और एक अल्पविराम से लापता है.

select id, name from orders
where
(
 select bool_and(j->>'status' = 'success') 
 from jsonb_array_elements(steps) j
 where j->>'step_name' in ('Step1','Step2','Step3') -- if not all steps but only these are needed
);
2021-11-18 13:18:38

हम कर सकते हैं इस क्वेरी का उपयोग के साथ मामला है...तो... अंत खंड ? पूर्व के लिए. यदि चरण 1','2.','3.' सफलता है आदेश "Devilered" स्थिति
Timothy94

हाँ, सुनिश्चित करने के लिए. वहाँ रहे हैं कई विकल्प हैं. मैं कोशिश कर रहा हूँ हालांकि बनाने के लिए प्रश्नों के रूप में कथात्मक रूप में संभव से बचने और हार्ड-कोडिंग का विवरण. लेकिन यह व्यक्तिगत स्वाद की बात है वास्तव में.
Stefanov.sm
0

आप उपयोग कर सकते हैं JSON मूल्य होते हैं ऑपरेशन के लिए जाँच की हालत मौजूद है या नहीं

डेमो

select
  *
from
  test
where
  steps @> '[{"step_name":"Step1","status":"success"},{"step_name":"Step2","status":"success"},{"step_name":"Step3","status":"success"}]'
2021-11-18 13:00:24

क्या होगा अगर चरणों की संख्या अज्ञात है अग्रिम?
Stefanov.sm

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में