繁体   English   中英

CouchDB有多个约束

[英]CouchDB multiple constraints

我在CouchDB中有一组地理定位的文档 - 也就是说,它们具有类似的结构

{
  _id: ...,
  ...
  coords: {
    lat: 45.204149214,
    long: 40.284712972
  }
}

我希望能够在地图上显示它们。 这要求我在给定的方格中获取所有文档。 在给定的时间间隔内很容易获得经度的所有文档:

// map function
function(doc) {
  emit(doc.coords.long, doc.other_stuff);
}

使用类似的查询

// query
/path/to/view/?startkey=40&endkey=50

问题是我没有看到如何做多维约束。 如何获得纬度介于20 30之间,经度介于40到50之间的所有文档? 我看到我可以指定多个键,但那会结果。

一种选择是在客户端上进行进一步过滤,但考虑到数据的大小,这可能是不可行的。

免责声明 :在SO上有一些类似的问题,基本上说明这是不可能的。 由于它们看起来都过时了,我想知道最新版本的CouchDB中是否有变化。

你是对的,不能做多维查询。 但是有GeoCouch 通过build-couchdb添加到沙发数据库很容易,或者您可以使用默认情况下烘焙的iriscouch主机。

正如您所看到的, 使用Geocouch相当容易,查询采用如下边界框:

http://localhost:5984/places/_design/main/_spatial/points?bbox=0,0,180,90

如果您不想使用geocouch(出于某种原因),我已成功使用GeoHash将两个维度映射到一维空间。 是视图代码, 是查询。 正如您所看到的,它并不优雅,但它可以在couchdb版本中移植,并且它也可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM