मैं "नया" JSONB प्रकार का उपयोग करने की कोशिश कर रहा हूं।जेसनबी पूर्णांक मानों को कैसे अनुक्रमणित करें
मेरे पास तालिका properties
जेसनबी फ़ील्ड है, और इसमें एक क्षेत्र publication_year
है। मैं एक साल की रेंज के भीतर सभी दस्तावेज़ रिकॉर्ड्स ढूंढना चाहता हूं उदा। 2013-2015। [संपादित करें: मूल्यों की एक श्रृंखला के लिए पूछताछ यहां मुख्य चुनौती है, भले ही मैंने नीचे एक सटीक मिलान उदाहरण का उपयोग किया हो। अनुरोध किया दृष्टिकोण भी के लिए लागू होता है, का कहना है कि डॉलर पर्वतमाला (कीमत> $ 20 और कीमत < $ 40) या टाइमस्टैम्प पर्वतमाला)]
मैं कोशिश की है:।
create index test1 on documents using gin ((cast(properties->'announced_on_year' as integer)));
ERROR: cannot cast type jsonb to integer
के साथ-साथ:
create index test1 on documents using gin (cast(properties->>'publication_year' as integer));
ERROR: data type integer has no default operator class for access method "gin"
HINT: You must specify an operator class for the index or define a default operator class for the data type.`
मैंने इस पोस्ट से http://www.postgresql.org/message-id/[email protected] देखा है कि यह संभव होना चाहिए, लेकिन मैं सही वाक्यविन्यास नहीं समझ सकता।
जब मैं सिर्फ एक सरल सूचकांक कार्य करें:
create index test1 on documents using gin ((properties->'publication_year'));
एक सूचकांक बनाया जाता है, लेकिन मैं एक सीमा चलते रहने के लिए पूर्णांक मूल्यों का उपयोग कर क्वेरी नहीं कर सकता है, यह कहना है
select count(*) from documents where properties->>'publication_year' = 2015;
ERROR: operator does not exist: text = integer
LINE 1: ...*) from documents where properties->>'publication_year' = 2015;
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
किसी भी सुझाव और संकेतों की अत्यधिक सराहना की। मुझे यकीन है कि दूसरों को भी फायदा होगा। टीआईए
धन्यवाद - मुझे लगता है कि यह वह जवाब है जिसे मैं चाहता था। भले ही दस्तावेज़ इसे निर्दिष्ट नहीं करते हैं, फिर भी आप इस समाधान के साथ सीएएसटी का उपयोग सीमा परिणाम प्राप्त करने के लिए कर सकते हैं, जैसा कि: 'एक्सप्लान विश्लेषण का चयन करें COUNT (*) दस्तावेजों से जहां (गुण - >>' प्रकाशन_यियर 'पूर्णांक के रूप में)> 2012 और कास्ट (गुण - >> 'publication_year' एएस पूर्णांक) <2016; –
मुझे यकीन नहीं है, अगर इसका उपयोग कर इस पर प्रदर्शन पर असर पड़ेगा (जो मुझे लगता है कि लक्ष्य है)। दस्तावेज़ के अनुसार - "- >>" ऑपरेटर इस प्रकार के सूचकांक द्वारा समर्थित नहीं है। इसके अलावा - आप 'x> ए और एक्स <बी' को 'एक्स और बी' के बीच 'x' में जोड़ सकते हैं – murison