当前实现在标准MongoDB B树顶部编码地理哈希码.$ near查询的结果是准确的.这种编码的一个限制虽然快,但是前缀查找不能给出精确的结果,特别是在位翻转区域周围.MongoDB通过在初始前缀扫描之后执行网格邻居搜索来解决此问题,以获取任何落后者点.这通常可确保性能保持很高,同时提供正确的结果.
这是否意味着mongodb将地球分成几个网格?
Greg Studer(10gen)的演示文稿详细讨论了地理空间索引: 使用MongoDB进行地理空间索引.
MongoDB 2.2中的标准地理空间实现使用2-D GeoHash方法,具有可变的精度:
By default, precision is set to 26 bits which is equivalent to approximately
2 feet given (longitude, latitude) location values and default (-180, 180)
bounds.
Run Code Online (Sandbox Code Playgroud)
GeoHash方法确实存在边缘情况,其中某些点可能在空间上接近但具有不同的哈希值.MongoDB还包括一个地理空间干草堆索引,该索引专门针对小区域"近"长/纬度搜索进行了调整,并附加了一个附加索引标准(例如:"查找25英里范围内名称为'foo'的所有餐厅").
来自Nicholas Knize(Thermopylae)的另一个有趣的演示文稿将当前的B树/ GeoHash方法与R树进行了对比.如果你跳到幻灯片8,有一个可能有用的视觉解释: 使用MongoDB进行RTree空间索引 - MongoDC.
| 归档时间: |
|
| 查看次数: |
3551 次 |
| 最近记录: |