2012-03-15 5 views
2

Я хочу заказать свои результаты на основе их близости к точкам MULTIPLE в 2D пространстве.MongoDB geoNear множественные координаты

Я предполагаю, что это будет сделано путем опроса первой точки, а затем повторного запроса/проверки этих результатов по второму пункту?

Возможно, приведенный ниже код объясняет, что я пытаюсь достичь немного лучше?

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

Решение: Incase кому интересно, это то, как я достиг этого (благодаря ниже ответ)

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

2

У MongoDB есть целая секция в своей документации по геопространственной индексации. http://www.mongodb.org/display/DOCS/Geospatial+Indexing

Я думаю, что вы ищете запрос ограниченной рамки. Это прямо из их примеров кода.

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