Я пытаюсь отфильтровать некоторые местоположения на основе расстояния от моего текущего местоположения.Я сохранил местоположения в mongodb, как показано ниже:
{
"_id" : ObjectId("5c66bb24546c9e0f14a9c76b"),
"geoLocation" : {
"type" : "Point",
"coordinates" : [
23.762865,
90.4282826
]
}
}
Теперь, когда я искал вышеуказанное местоположение из моего текущего местоположения, я увидел, что расстояние показывает 226.98475261562422 .
db.locations.aggregate([
{ "$geoNear": {
"near": {
"type": "Point",
"coordinates": [90.426333, 23.7638519]
},
"distanceField": "distance",
"spherical": true,
"maxDistance": 1000
}}
])
Я пробовал этот запрос, используя драйвер MongoDB Asp.Net C # , и он возвращал то же местоположение, но я не получил расстояние, хотя.Но я проверил, что если я даю 225 в качестве максимального расстояния, возвращаемый результат будет пустым.
public async Task<List<Entity>> GeoNearAsync(
Expression<Func<Entity, object>> locationField, double longitude, double latitude, double distance)
{
var point = new GeoJson2DGeographicCoordinates(longitude, latitude);
var geoJsonPoint = new GeoJsonPoint<GeoJson2DGeographicCoordinates>(point);
var nearFilter = Builders<Entity>.Filter.NearSphere(locationField, geoJsonPoint, distance);
var result = await _collection.Find(nearFilter).ToListAsync();
return result;
}
Но когда я зашел на карты Google и попытался увидеть расстояние между этими двумя точками, это дало мне 650 метр.
Почему расстояние между двумя точками отличается в mongodb и google map?
Является ли вычисленное расстояние, возвращаемое запросом mongodb, правильным? Если нет, как получить расстояние в mongodb?