Единицы измерения для maxdistance и MongoDB? - PullRequest
34 голосов
/ 20 октября 2011

Я пытаюсь разобраться в MongoDB и в геопространственных поисках. В основном я хочу, чтобы пользователи могли запрашивать документы (изображения), которые снимаются в пределах установленного расстояния от текущего местоположения пользователя. Таким образом, пользователь ищет все снимки, снятые в пределах 1 км от того места, где он стоит, и пытаюсь использовать Приведенный ниже пример, но я понятия не имею, что установить в качестве значения максимального сопротивления.

db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 }})

Итак, мой вопрос: что я могу задать как maxdistance, если я ищу документы? в радиусе 1 км?

Я полностью застрял здесь.

Ответы [ 2 ]

67 голосов
/ 21 октября 2011

Чтобы использовать запросы mongodb $near с границами в км, необходимо преобразовать значение радиуса в км. По умолчанию mongodb $ near принимает $maxDistance как radius.

Преобразовать расстояние на 111.12 (один градус составляет примерно 111,12 км) при использовании км или оставить расстояние, как оно при использовании степени

на ваш вопрос

что мне установить как maxdistance, если я ищу документы в Радиус 1 км?

Вы можете использовать это

   db.places.find( { loc : { $near : [50,50] , $maxDistance : 1/111.12 } } )

Я подробно ответил, как использовать геопространственные объекты Монго . Вы можете проверить

16 голосов
/ 08 октября 2013

Начиная с версии 2.4 MongoDB, вы можете указать радиус непосредственно в метрах как значение $ maxDistance , например:

db.<collection>.find({loc: {$near : 
                               {$geometry : 
                                   {
                                    type: 'Point', 
                                    coordinates: [<longitude> , <latitude>]       
                                   }
                               }, 
                               $maxDistance: 10*100 
                           }
                     }); 
...