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