2013-06-17 20 views
7

CouchDB'de bir konum veritabanı ile çalışıyorum. Anahtarımın yuvarlatılmış enlem ve boylam değerleri olan bir dizi olduğu bir görünüm oluşturdum. Şimdi aşağıdaki koşullarla seçerek ediyorum: BuradaCouchDB'de başlangıç ​​ve bitiş tuşları nasıl çalışır?

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

enlem 52.34 ve 52.37 arasında nerede olduğunu sadece belgeleri alırsınız bekliyoruz. Ve 4.883 ile 4.903 arasındaki boylam.

sonuç aldığım:

Not almış olabileceğiniz gibi
[ 52.358, 4.919 ] 
[ 52.358, 4.919 ] 
[ 52.362, 4.861 ] 
[ 52.362, 4.861 ] 
[ 52.362, 4.861 ] 

, ilk sonucu endkey, 4,919 boylam sonra boylam büyüktür.

Şimdi, dizideki ikinci öğenin aralığının dışında kalan bazı değerleri alacağımı bir yerde okuduğum/okuduğum. Ama ilk maddenin zaten kriterlere uymaması nasıl mümkün olabilir?

Biraz araştırdım ve başlangıç ​​anahtarının/bitiş anahtarının bir dizisi olarak gerçekten bir açıklama bulamıyorum. Bana, CouchDB'nin belgelerde nasıl dolaştığını ve 'ne zaman' başladığını ve ne zaman 'sonlandırılacağını' açıklayan bir açıklama kim verebilir?

startkey == [a, 11] ve endkey == [c, 11]: Bu tuşları ile görünümünde aşağıdaki verileri varsayarak

+0

En son 2 boyutlu sorgular desteklenmiyor, biliyorum (sorgular işe yaramayacak). Birçok kişi GeoCouch'u kullanır (https://github.com/couchbase/geocouch/). – WiredPrairie

+0

Couch'un dizideki ikinci elemanı görmezden geleceğini mi söylüyorsun? – Lumocra

+0

2 2 boyutlu sorgular desteklenmiyor, bu yüzden "yok say" ı düşünebilirsiniz. – WiredPrairie

cevap

15

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

(bir okla işaretlenen Herşey iade edilecektir).

Görünümdeki veriler anahtar kullanılarak sıralanır. startkey ve endkey ile, görünümde 'un ve başlangıç ​​noktalarını denetleyebilirsiniz. Veriler için kısıtlamaları belirtemezsiniz. startkey ve endkey arasında sıralanmış olan her şey iade edilir. Daha fazla bilgi için lütfen http://wiki.apache.org/couchdb/View_collation'u okuyun.

Eğer jeo uzamsal sorgular yapmak istiyorsanız, GeoCouch'a (https://github.com/couchbase/geocouch/) bakın.


Özet: CouchDB görünümlerindeki tuşlar tek boyutlu listelerde depolanır. Bu listelerdeki girişler View_collation'daki kurallara göre sıralanmıştır. İki boyutlu diziler özel görünebilir, ama aslında değildir. [a, 10] önce[b, 5] ve öncea ve sonra[a] ve sonra sıralanır[c] (örneğin).

Eğer startkey ve endkey kullanırsanız

, "herşey dahil ve startkey sonra öncesi ve endkey dahil" derler. startkey ve endkey girişleri listesinde bulunmamalıdır.

+0

[a, 10] ve [a, 11] 'i yukarıdaki örneğinizden kaldırırsak. Couch daha sonra [a, 12] 'de başlayacak mı? Benim durumumda böyle görünüyor. – Lumocra

+0

Evet, tam olarak bu olacak. CouchDB, başlangıç ​​anahtarından eşit veya büyük olan bir sonraki anahtarı alır. – thriqon

+0

Ayrıca, daha sonra da daha büyük olmasına rağmen. Tamam, kafa karıştırıcı ama açıklama :-) – Lumocra