2011-12-27 38 views
6

任何人都知道地理空间索引是如何工作的,我的意思是计算最近点的算法?mongodb中地理空间索引的内部机制

在SQL我们可以做这样的事情:
SELECT id, (x-a)*(x-a)+(y-b)*(y-b) as distance FROM table1 ORDER by distance ASC
当然这是不够用MongoDB的地理空间索引比较有效的,但如何做MongoDB的计算和排序?

非常感谢提前。

回答

4

mongodb地理空间的心脏是Geohashes。 Geohash是一个

分层空间数据结构将空间细分为 栅格形状的桶。

我找不到适合mongo的geohash实现的链接,但是这个thread可能会提供一些见解。

+1

谢谢!这有很大帮助。从来没有听说过Geohashes,似乎我需要谷歌和深入研究第一个~~ – adamsmith 2011-12-28 06:32:18

2

10gen site

当前实现编码顶上标准 MongoDB的B树地理散列码。 $ near查询的结果是确切的。使用此编码的一个限制 尽管速度很快,但前缀查找不会给出准确的结果,尤其是在位翻转区域周围。 MongoDB通过在初始前缀扫描之后执行网格邻居搜索来解决这个问题,以挑选 以上的任何零散点。这通常确保了性能 保持非常高,同时提供正确的结果。

+0

也有关于C++源代码的实现细节的评论,它是开源的,可供下载(我的源代码在另一台计算机上但我认为它是一个z-order-b-tree ...从我的理解,最终结果基本上是一个四键算法) – Jordan 2011-12-27 23:25:20

相关问题