2013-08-26 53 views
2

我有一個MongoDB集合。集合中的每個文檔都有x,y座標表示網格上的位置。給定一個點(x',y'),我想通過歐幾里得距離檢索它們的位置與(x',y')最接近的前k個文檔。我從一個rails應用程序使用MongoDB。如果可能的話,我想對數據庫進行計算。我該怎麼做?按照它們到指定點的距離排序MongoDB文檔

+0

一個geonear查詢應該是默認這樣做 – Sammaye

回答

1

如果將座標存儲爲數組[x,y],則只需在該字段上創建地理空間索引(「2d」)即可。

要查詢的索引:

db.runCommand({geoNear: <collection>, near: [x, y], limit: k}) 

如果有關MongoDB 2.4,優選的方法是使用以GeoJSON格式(即{類型: 「點」,座標:[X,Y]})和「2dsphere」索引,但傳統格式也受支持。

要查詢的索引:

db.runCommand({geoNear: <collection>, near: {type: "Point", coordinates:[x, y]}, limit: k}) 

的geoNear命令返回由距離排序的結果。

下面是文檔: