我正在使用CouchDB中的位置数据库.我创建了一个视图,其中我的键是一个具有舍入纬度和经度值的数组.现在我选择以下条件:
Startkey: [ 52.34, 4.883 ]
Endkey: [ 52.37, 4.903 ]
Run Code Online (Sandbox Code Playgroud)
在这里,我希望我只收到纬度介于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 ]
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到,在第一个结果中,经度大于结束键的经度4.919.
现在我知道/读到某个地方我会收到一些超出数组中第二项范围的值.但是第一项如何可能不符合标准呢?
我用Google搜索了一下,我无法真正找到startkey/endkey作为数组的解释.谁可以向我解释CouchDB如何遍历文档并定义何时"开始"以及何时"结束"?
thr*_*qon 18
使用这些键在视图中假设以下数据:
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]
Run Code Online (Sandbox Code Playgroud)
(将返回标有箭头的所有内容).
视图中的数据使用键进行排序.使用startkey,endkey您可以控制在视图中的起点和终点.您无法为数据指定约束.即在分类之间的一切startkey和endkey将被退回.有关更多信息,请阅读http://wiki.apache.org/couchdb/View_collation.
如果您想进行地理空间查询,请查看GeoCouch(https://github.com/couchbase/geocouch/).
总结:CouchDB视图中的键存储在一维列表中.这些列表中的条目根据View_collation中的规则进行排序.二维数组可能看起来很特别,但实际上它们不是.[a, 10]排序后 [a]和之后 a和之前 [b, 5]和之前 [c](例如).
如果你使用startkey和endkey,你说"一切,包括之后startkey和之前并包括endkey".startkey和endkey项会不会有出现在列表中.
| 归档时间: |
|
| 查看次数: |
10808 次 |
| 最近记录: |