在 Cloudant 中使用 MapReduce 获取地理空间索引的结果

Using MapReduce for results of geospatial indexes in Cloudant

我在 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
  }
}

这似乎是一个有用的功能,但答案是 'no'。 Geo 索引器无法对数据执行聚合。

我认为您必须按照您的想法去做 -- 使用返回的文档 ID 列表在另一个 map-reduce 系统中分发计算。