Kiedy odpalam to zapytanie na MongoDB, otrzymuję wszystkie miejsca w odległości 500 mil od podanych współrzędnych. Ale chcę znać dokładną odległość między określonymi współrzędnymi i lokalizacją wyniku.MongoDB odległość drukowania między dwoma punktami
db.new_stores.find({ "geometry": { $nearSphere: { $geometry: { type: "Point", coordinates: [ -81.093699, 32.074673 ] }, $maxDistance: 500 * 3963 } } }).pretty()
moje wyjście wygląda następująco:
{
"_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"
}
}
Ja też chcę wiedzieć odległość tego miejsca od podanej współrzędnej. Stworzyłem indeks 2dsphere na geometrii.
Wielkie dzięki, działa idealnie. Ciekawi Cię, dlaczego pomnożyłeś go przez 1609? – SiMemon
@SiMemon Ponieważ jest 1609 metrów na milę, i vice/versa na odległościMultiplier. Numer 3963, którego używałeś, to przekształcenie "radianów" na mile, które w przypadku współrzędnych punktu GeoJSON byłyby nieprawidłowe. Radian stosuje się tylko z pamięcią masową, a zapytanie wykorzystuje "starsze pary współrzędnych". –