2011-12-27 43 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

相關問題