2012-03-15 78 views
2

我想根據他們接近2D空間中的多個點來排序我的結果。MongoDB geoNear multiple coordinates

我認爲這將通過查詢第一點,然後重新查詢/檢查這些結果對第二點來完成?

也許下面的代碼解釋了我想要實現更好的一點?

db.runCommand({ 
    geoNear:"places", 
    near:[ [52.5243, 13.4063], [48.1448, 11.5580] ] 
}) 

解決方案:櫃面有人有興趣,我這是怎麼實現這一點(由於下面的回答)

a = Trip.geo_near([52.5243, 13.4063], :max_distance => 40, :unit => :mi).uniq 
b = Trip.geo_near([48.1448, 11.5580], :max_distance => 40, :unit => :mi).uniq 
@results = a & b 

回答

1

你有什麼打算上面的查詢返回?靠近一個或另一個位置的地方?在這種情況下,您應該運行兩個查詢,然後將結果合併到您的應用程序代碼中。

+0

當然!不知道我是如何忽略這一點的,謝謝。 – johnrees 2012-03-15 16:35:15

2

MongoDB在他們有關Geospacial索引的文檔中有一整段內容。 http://www.mongodb.org/display/DOCS/Geospatial+Indexing

我想你要找的是一個邊界框查詢。這是直接來自他們的代碼示例。

box = [[40.73083, -73.99756], [40.741404, -73.988135]] 
db.places.find({"loc" : {"$within" : {"$box" : box}}})