【发布时间】:2018-09-25 15:04:32
【问题描述】:
我有一个包含数千万条 GeoJSON 记录的数据集合,我将非常频繁地执行一项操作,即选择预定义区域内某种类型的所有点。数据库没有分片。这些区域不是圆形的,但它们是完全凸的,对于每个区域,我都知道质心和最大半径。它们都没有超过 8 个顶点。
所以:假设我非常乐意在一个区域的封闭圆内检索所有内容,而不是仅在其精确几何范围内检索,那么对质心和半径使用$nearSphere 查询会更有效(然后修剪去掉客户端不需要的点),还是应该在实际几何图形上坚持使用$geoWithin?考虑到这些查询的执行频率,即使是很小的改进在这里也很重要。
【问题讨论】:
-
前段时间我也有类似的疑惑,最后决定把搜索的东西完全移到 ElasticSearch 上。 ES 完美地支持几何事物,并且在大多数情况下确实做得非常快。一些数字:现在我的 mongo 包含大约 5 亿个条目,并且 ES 对这个数据集进行搜索 - 使用地理坐标进行 4 次边缘聚合搜索大约需要 50 毫秒
-
@AlexanderPaderin 在这种情况下 ES 不是一个选项。
-
啊好的。所以听起来这只是性能测量的问题..我建议生成足够大的数据集并收集一些数字。祝你好运
-
希望有人会知道他们的头顶,因此赏金:) 如果没有,那就是 B 计划。
标签: mongodb performance mongodb-query geospatial