I have a collection of stores with a geospacial index on the location propery.
What I am trying to do is given the user's latitude, latitude and a search radius (mi), I want to return the list of stores that are within those parameters.
I saw the following example on the MongoDB documentation (http://www.mongodb.org/display/DOCS/Geospatial+Indexing), but it looks like the distance is in radians.
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
So, what is the formula to convert miles to radians?
Solution The awesome people at mongodb-user helped me find the answer. Basically, what I was really looking for was a way to limit the distance.
Per, the updated documentation, there is a 3rd parameter to the $near query: You can also use $near with a maximum distance
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)
The value for $maxDistance is in radians; so, I had to take my distance in miles and divide it by 69.
Thank you!
$near
query (which means$maxDistance
must be in the same units as the coordinates are), not a spherical query (which do require$maxDistance
to be in radians). – John Flatness