MongoDB geoNear несколько координат - PullRequest
2 голосов
/ 15 марта 2012

Я хочу заказать свои результаты, основываясь на их близости к НЕСКОЛЬКИМ точкам в 2D-пространстве.

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

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

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

Ответы [ 2 ]

3 голосов
/ 21 апреля 2012

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}}})
1 голос
/ 15 марта 2012

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

...