2013-06-17 4 views
7

मैं कॉच डीबी में एक स्थान डेटाबेस के साथ काम कर रहा हूं। मैंने एक दृश्य बनाया जहां मेरी कुंजी अक्षांश और देशांतर के गोलाकार मूल्यों के साथ एक सरणी है। अब मैं निम्नलिखित शर्तों के साथ का चयन कर रहा हूँ:सीचडीबी में स्टार्टकी और एंडकी कैसे काम कर रही है?

Startkey: [ 52.34, 4.883 ] 
Endkey: [ 52.37, 4.903 ] 

यहाँ मैं उम्मीद करते हैं कि मैं केवल दस्तावेजों प्राप्त करेंगे जहां अक्षांश 52.34 और 52.37 के बीच है। और 4.883 और 4.903 के बीच रेखांश।

परिणाम मैं प्राप्त करते हैं:

[ 52.358, 4.919 ] 
[ 52.358, 4.919 ] 
[ 52.362, 4.861 ] 
[ 52.362, 4.861 ] 
[ 52.362, 4.861 ] 

आप का उल्लेख किया है हो सकता है, पहला परिणाम में देशांतर अधिक से अधिक तो endkey, 4.919 के देशांतर है।

अब मुझे कहीं पता/पढ़ा है कि मुझे कुछ मान प्राप्त होंगे जो सरणी में दूसरे आइटम की सीमा के बाहर हैं। लेकिन यह कैसे संभव है कि पहला आइटम पहले से ही मानदंडों के अनुरूप नहीं है?

मैं थोड़ी देर के लिए गुगल हो गया और मुझे वास्तव में स्टार्टकी/एंडकी की सरणी के रूप में स्पष्टीकरण नहीं मिल रहा है। मुझे कौन सा स्पष्टीकरण दे सकता है कि कैसे कॉच डीबी दस्तावेजों के माध्यम से लूप करता है और परिभाषित करता है कि 'कब' और कब 'अंत' कब होता है?

+0

2 आयामी प्रश्न समर्थित नहीं हैं पिछली बार मुझे पता था (इसलिए आपके प्रश्न काम नहीं करेंगे)। बहुत से लोग GeoCouch (https://github.com/couchbase/geocouch/) का उपयोग करते हैं। – WiredPrairie

+0

आप कह रहे हैं कि सोफे सरणी में दूसरे तत्व को अनदेखा कर देगा? – Lumocra

+0

2+ आयामी प्रश्न समर्थित नहीं हैं, इसलिए मुझे लगता है कि आप "अनदेखा" पर विचार कर सकते हैं। – WiredPrairie

उत्तर

15

इन कुंजियों के साथ अपने दृश्य में निम्नलिखित डेटा संभालने:

startkey == [a, 11] और endkey == [c, 11]:

[a, 10] 
[a, 11] <-- startkey 
[a, 12] <-- 
[b, 10] <-- 
[b, 11] <-- 
[b, 12] <-- 
[c, 10] <-- 
[c, 11] <-- endkey 
[c, 12] 

(एक तीर से चिह्नित सब कुछ वापस कर दी जाएगी)।

दृश्य में डेटा कुंजी का उपयोग करके क्रमबद्ध किया जाता है। startkey और endkey के साथ आप और अंत पर विचार कर सकते हैं। डेटा के लिए आप बाधा निर्दिष्ट नहीं कर सकते हैं। startkey और endkey के बीच सॉर्ट की गई सभी चीज़ों को वापस कर दिया जाएगा। अधिक जानकारी के लिए कृपया http://wiki.apache.org/couchdb/View_collation पढ़ें।

यदि आप भू-स्थानिक प्रश्न करना चाहते हैं तो आपको GeoCouch (https://github.com/couchbase/geocouch/) देखना चाहिए।


सारांशित: कॉच डीबी दृश्यों में कुंजी एक-आयामी सूचियों में संग्रहीत हैं। इन सूचियों में प्रविष्टियां View_collation में नियमों के अनुसार क्रमबद्ध की जाती हैं। दो आयामी सरणी विशेष लग सकती हैं, लेकिन वास्तव में वे नहीं हैं। [a, 10]से पहले[b, 5] और से पहलेa और के बाद[a] और के बाद क्रमबद्ध हो जाता है[c] (उदाहरण के लिए)।

यदि आप startkey और endkey का उपयोग करते हैं, तो आप कहते हैं "startkey सहित और बाद में और endkey सहित"। startkey और endkey प्रविष्टियां सूची में मौजूद होने चाहिए।

+0

यदि हम उपरोक्त आपके उदाहरण से [ए, 10] और [ए, 11] को हटा देते हैं। क्या सोफे तब शुरू होगा [ए, 12]? मेरी स्थिति में ऐसा ही लगता है। – Lumocra

+0

हां, बिल्कुल ऐसा होगा। CouchDB अगली कुंजी लेता है जो स्टार्टकी से बराबर या बड़ा होता है। – thriqon

+0

भले ही यह भी बड़ा है तो एंडकी। ठीक है, उलझन में है लेकिन स्पष्टीकरण के लिए धन्यवाद :-) – Lumocra

संबंधित मुद्दे