任何人都知道地理空间索引是如何工作的,我的意思是计算最近点的算法?mongodb中地理空间索引的内部机制
在SQL我们可以做这样的事情:
SELECT id, (x-a)*(x-a)+(y-b)*(y-b) as distance FROM table1 ORDER by distance ASC
当然这是不够用MongoDB的地理空间索引比较有效的,但如何做MongoDB的计算和排序?
非常感谢提前。
任何人都知道地理空间索引是如何工作的,我的意思是计算最近点的算法?mongodb中地理空间索引的内部机制
在SQL我们可以做这样的事情:
SELECT id, (x-a)*(x-a)+(y-b)*(y-b) as distance FROM table1 ORDER by distance ASC
当然这是不够用MongoDB的地理空间索引比较有效的,但如何做MongoDB的计算和排序?
非常感谢提前。
当前实现编码顶上标准 MongoDB的B树地理散列码。 $ near查询的结果是确切的。使用此编码的一个限制 尽管速度很快,但前缀查找不会给出准确的结果,尤其是在位翻转区域周围。 MongoDB通过在初始前缀扫描之后执行网格邻居搜索来解决这个问题,以挑选 以上的任何零散点。这通常确保了性能 保持非常高,同时提供正确的结果。
也有关于C++源代码的实现细节的评论,它是开源的,可供下载(我的源代码在另一台计算机上但我认为它是一个z-order-b-tree ...从我的理解,最终结果基本上是一个四键算法) – Jordan 2011-12-27 23:25:20
谢谢!这有很大帮助。从来没有听说过Geohashes,似乎我需要谷歌和深入研究第一个~~ – adamsmith 2011-12-28 06:32:18