Mam kolekcję sklepów z indeksem geoprzestrzennym na danym obiekcie.MongoDB Bound Queries: Jak przekonwertować mile na radian?
Co próbuję zrobić, to podać szerokość i szerokość geograficzną użytkownika oraz promień wyszukiwania (mi), chcę zwrócić listę sklepów, które mieszczą się w tych parametrach.
Widziałem następujący przykład na dokumentacji MongoDB (http://www.mongodb.org/display/DOCS/Geospatial+Indexing), ale wygląda na to, że odległość jest w radianach.
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Jaka jest więc formuła przeliczania mil na radiany?
Rozwiązanie Awesome people at mongodb-user pomógł mi znaleźć odpowiedź. Zasadniczo to, czego naprawdę szukałem, było sposobem na ograniczenie odległości.
Per, zaktualizowana dokumentacja istnieje 3rd parametr do $ najbliższej zapytania: Można również użyć $ pobliżu maksymalnej odległości
db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 } }).limit(20)
Wartość $ maxDistance jest w radianach; musiałem więc przebyć dystans w milach i podzielić go przez 69.
Dziękuję!
udało mi się znaleźć odpowiedzi na moje pytanie, zamieszczając na mongdb użytkownika Grupy Google (http://groups.google.com/group/mongodb-user/browse_thread/thread/d37c781bbfff5f08). – Abe
Uwaga: dzielenie przez 69 jest przybliżoną konwersją z mil na * stopnie *, a nie na radiany. Stopnie są tutaj poprawne, ponieważ jest to zwykłe zapytanie 'near $ near' (co oznacza, że '$ maxDistance' musi znajdować się w tych samych jednostkach, co współrzędne), a nie kwerenda sferyczna (która * wymaga * wymaga' $ maxDistance' do być w radianach). –