我在Cloudant中使用地理空间索引来检索多边形内的所有文档。现在我想计算这些文件的一些基本静态值(例如,一个地区的平均年龄和收入总和)。
是否可以查询地理索引,然后将结果传递给MapReduce函数?
我如何实现这一目标,最好是在数据库中?我可以先避免在多边形内部查询文档ID,然后发送检索到的ID来执行MapReduce(我正在处理大型数据集)吗?
到目前为止工作的是查询索引以及使用视图(单独)。
我的地理位置索引
function (doc) {
if (doc.geometry && doc.geometry.coordinates) {
st_index(doc.geometry);
}
}
我的观点
function (doc) {
var beitrag = doc.properties.beitrag;
var schadenaufwand = doc.schadenaufwand;
if(beitrag !== null && typeof beitrag === 'number' ) {
emit(doc._id, doc.properties.beitrag);
}
}
示例geoJson文档(原始数据看起来类似)
{
"_id": "01bff77f642fc4249e787d2ded011504",
"_rev": "1-25a9a1a15939d5b21af3fbcc5c2d6ed1",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
7.2316,
40.99
]
},
"properties": {
"age": 34,
"earnings": 982.7
}
}
答案 0 :(得分:1)
这似乎是一个有用的功能,但答案是“没有”。地理索引器无法对数据执行聚合。
我认为您必须按照您的想法进行操作 - 使用返回的doc ID列表将计算分配到另一个map-reduce系统中。