MongoDB如何实现它的空间索引?

时间:2012-09-19 09:34:34

标签: mongodb

  

当前实现在标准上编码地理哈希码   MongoDB B树。 $ near查询的结果是准确的。一个限制   使用这种编码,虽然快,是前缀查找不给   确切的结果,尤其是位翻转区域。 MongoDB解决了这个问题   通过在初始前缀扫描之后进行网格邻居搜索来进行选择   任何落后点。这通常可以确保性能   在提供正确结果的同时保持很高的水平。

这是否意味着mongodb将地球分成几个网格?

1 个答案:

答案 0 :(得分:7)

Greg Studer(10gen)的演示文稿详细讨论了地理空间索引:  Geospatial Indexing with 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.

GeoHash方法确实存在边缘情况,其中某些点可能在空间上接近但具有不同的哈希值。 MongoDB还包括一个Geospatial Haystack Index,专门用于小区域“近”长/纬度搜索,并附带一个附加索引标准(例如:“查找25英里范围内名称为'foo'的所有餐馆”)。

Nicholas Knize(Thermopylae)的另一个有趣的演讲将当前的B-tree / GeoHash方法与R-trees进行了对比。如果你向前跳到幻灯片8,有一个可能有用的视觉解释:  RTree Spatial Indexing with MongoDB - MongoDC