我有一个CouchDB,其中每个文档代表地图上的一个点。此外,每个文档都有一个id列表,其中每个id都表示地图上链接的目标。我想知道是否有可能创建一个GeoCouch空间索引,其中键是链接的GeoJSON表示(例如LineStrings)。我在下面给出一个例子。
让我们假设我有这两个文档:
{
_id: "doc1",
latlng: [52.52, 13.13], // geoposition of doc1
links: ["doc2", "doc3"] // links to doc2 and doc3
}
和
{
_id: "doc2",
latlng: [53.53, 14.14], // geoposition of doc2
links: ["doc1"] // link to doc1
}
我想要的是一个空间索引,我可以查询所有链接在一个给定的边界框。但是,在为doc1运行的CouchDB/GeoCouch映射函数中,我无法访问doc2的地理位置。
有没有人看到在上述情况下为链接实现空间索引的另一种方法?
在Apache CouchDB中,您可以将链接发送为_id
,使用include_docs=true
查询它,并使用_list函数将其转换为您想要的任何内容。
遗憾的是GeoCouch不支持include_docs
参数,所以它不会在那里工作。对于GeoCouch,您需要发出两个请求。首先获得链接,然后获得keys=[the-ids]
的所有文档。您可以选择在视图上执行第二个请求,并使用_list函数从中获取GeoJSON。