When I am firing this query on MongoDB, I am getting all the places in the proximity of 500 miles to the specified co-ordinates. But I want to know the exact distance between the specified co-ordinates and the result location.
db.new_stores.find({ "geometry": { $nearSphere: { $geometry: { type: "Point", coordinates: [ -81.093699, 32.074673 ] }, $maxDistance: 500 * 3963 } } } ).pretty()
My Output looks like:
{ "_id" : ObjectId("565172058bc200b0db0f75b1"), "type" : "Feature", "geometry" : { "type" : "Point", "coordinates" : [ -80.148826, 25.941116 ] }, "properties" : { "Name" : "Anthony's Coal Fired Pizza", "Address" : "17901 Biscayne Blvd, Aventura, FL" } }
I also want to know the distance of this place from the specified co-ordinate. I created 2dsphere index on geometry.
Distance between two points is the length of the line segment that connects the two points in a plane. The formula to find the distance between the two points is usually given by d=√((x2 – x1)² + (y2 – y1)²). This formula is used to find the distance between any two points on a coordinate plane or x-y plane.
The haversine formula determines the great-circle distance between two points on a sphere given their longitudes and latitudes. Important in navigation, it is a special case of a more general formula in spherical trigonometry, the law of haversines, that relates the sides and angles of spherical triangles.
The math. dist() method returns the Euclidean distance between two points (p and q), where p and q are the coordinates of that point. Note: The two points (p and q) must be of the same dimensions.
You can use the $geoNear
aggregate pipeline stage to produce a distance from the queried point:
db.new_stores.aggregate([ { "$geoNear": { "near": { "type": "Point", "coordinates": [ -81.093699, 32.074673 ] }, "maxDistance": 500 * 1609, "spherical": true, "distanceField": "distance", "distanceMultiplier": 0.000621371 }} ]).pretty()
This allows you to specify "distanceField"
which will produce another field in the output documents containing the distance from the queried point. You can also use "distanceMultiplier"
to apply any conversion to the output distance as required ( i.e meters to miles, and noting that all GeoJSON distances are returned in meters )
There is also the geoNear
command with similar options, but it of course does not return a cursor as output.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With