Vous utilisez MongoDB 2.6.1 ou une version ultérieure car le code que vous consultez a été ajouté en tant que correctif pour un JIRA-13666 publier.
Le problème était que certaines requêtes $near plantaient le serveur MongoDB lorsqu'elles étaient appelées avec des coordonnées héritées hors plage.
Vous envoyez probablement des coordonnées qui sont hors de portée. La partie du code qui vérifie la longitude et la latitude lors de requêtes $near avec une distance maximale (GeoParser::parsePointWithMaxDistance
méthode dans geoparser.cpp
):
bool isValidLngLat(double lng, double lat) {
return lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
}
Si les coordonnées sont hors plage centroid.flatUpgradedToSphere
sera faux et cela provoquera l'erreur que vous recevez.
Vous devez soit modifier vos coordonnées pour qu'elles soient à portée, soit définir spherical
paramètre sur false pour éviter d'obtenir cette erreur.
Query.Near("Location", location.Geography.Longitude,
location.Geography.Latitude, location.Radius / 6371000, false)