How To Write Simple Query Using Couchbase View? -
सरल रूप से, मेरा मतलब है के बराबर:
SELECT * FROM ORDERS जहां स्थिति = 'शिप' ;
यह दस्तावेज होगा:
{"प्रकार": "आदेश", "आदेश_no": 10002, "आदेश-दिनांक": "2010-07-24", "स्थिति ":" भेज दिया गया "," ग्राहक_नो ": 1001}
मैं इस तरह एक मानचित्र के साथ एक दृश्य बना सकता हूँ:
फ़ंक्शन (डॉक्टर, मेटा) {if (meta .प्रकार == "जेसन" & amp; amp; amp; & amp; doc.type == "ऑर्डर" & amp; amp; amp; amp; & amp; डॉक्टर.स्टेटस == "शिप किया गया") {emit (meta.id, doc); }} लेकिन फिर मुझे प्रत्येक स्थिति मान के लिए एक अलग दृश्य की आवश्यकता होगी जिसे मैं क्वेरी करना चाहता था। मैंने काउचबेस कंसोल में फ़िल्टर पैरामीटर के कुछ विभिन्न क्रमभूमियों की कोशिश की है, लेकिन अभी तक एक कार्यशील संयोजन खोजना है।
मैंने इसे एक समझ लिया और मुझे लगा कि मैं अपना समाधान साझा करूंगा।
एक एक दृश्य का उपयोग करके "इंडेक्स बनाना" के बारे में बहुत कुछ पढ़ता है, और यही वह एक एसक्यूएल VIEW से अधिक की तरह कार्य करता है। इसलिए, सफलतापूर्वक दृश्यमान पैरामीटर जैसे कि स्टार्टकी और एंडकी का उपयोग करने के लिए, मुझे एक ऐसा दृश्य बनाना पड़ता है, जो मुझे उस कुंजी को खारिज कराना होता है जिसे मैं क्वेरी करना चाहता हूं। इस मामले में:
फ़ंक्शन (डॉक्टर, मेटा) {यदि (मेटा। टाइप == "जेसन" और amp; amp; डॉक्टर। टाइप == "ऑर्डर") {emit (doc.status , डॉक्टर); }} ध्यान दें कि मैं मेटा.आईडी को उत्सर्जित करने के लिए पहले एजी के रूप में नहीं निकालता हूं। अगर मैंने किया, तो मुझे आईडी से पूछना होगा, स्थिति से नहीं। वैसे भी, इस दृश्य के साथ (हम इसे by_status कॉल कर सकते हैं), स्टार्टकी और एंडकी मापदंडों दोनों "शिप" हो सकते हैं, अगर मैं शिप ऑर्डर्स चाहता हूं:
? Stale = false & startkey =% 22 स्पीप% 22 & amp; Endkey =% 22 स्प्पीड% 22 और amp; कनेक्शन_टाइमआउट = 60000 & amp; सीमा = 10 & amp; छोड़ें = 0
वे कहते हैं कि यह पूरे डॉक्टर को वापस करने का एक अच्छा विचार नहीं है (दूसरा एएमआईटी () एजीआर)। अधिक किफायती होने के लिए, मुझे लगता है कि मैं डॉक्टर विशेषता की एक सरणी को वापस कर सकता हूं, जैसे:
फ़ंक्शन (डॉक्टर, मेटा) {if (meta.type == "json" & amp; Doc.type == "आदेश") {emit (doc.status, [meta.id, doc.customer_no, doc.order_no, doc.order_date]); }} जो अभी भी सभी विशेषताओं को प्रदान करता है, लेकिन डॉक्टर प्रकार को दोहराए बिना ("ऑर्डर" में हार्ड-फ़िल्टर्ड) और doc.status, जो परिणामों का मुख्य विशेषता है बीटीडब्लू, मेटा.आईडी के अतिरिक्त मुझे कुछ मिलता है जो मैं मिल सकता है () कॉल में।
उम्मीद है कि यह किसी को मदद करता है
Comments
Post a Comment