Използвате MongoDB 2.6.1 или по-нова версия, защото кодът, който разглеждате, е добавен като корекция за JIRA-13666 проблем.
Проблемът беше, че някои $near заявки биха сринали сървъра на MongoDB, когато са извикани с наследени координати, които са извън обхвата.
Вероятно изпращате координати, които са извън обхват. Частта от кода, която проверява географската дължина и ширина, когато правите $near заявки с максимално разстояние (GeoParser::parsePointWithMaxDistance
метод в geoparser.cpp
):
bool isValidLngLat(double lng, double lat) {
return lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
}
Ако координатите са извън диапазона centroid.flatUpgradedToSphere
ще бъде невярно и това ще причини грешката, която получавате.
Трябва или да промените координатите си, за да бъдат в обхват, или да зададете spherical
параметър на false, за да избегнете получаването на тази грешка.
Query.Near("Location", location.Geography.Longitude,
location.Geography.Latitude, location.Radius / 6371000, false)