我为MongoDB的2dsphere
索引编写了一个GeoJSON对象(在PHP中):
array (size=2)
'type' => string 'Point' (length=5)
'coordinates' =>
array (size=2)
0 => float 45
1 => float 95
除非在MongoDB中不起作用,否则返回错误:
Can't extract geo keys from object, malformed geometry
为什么不能保存这个有效的GeoJSON点?
答案 0 :(得分:1)
你对错误的纬度/经度值是正确的。正如per documentation:
默认情况下,2d索引假定经度和纬度并具有 -180包含边界和180包含非包容性。如果是文件 包含指定范围之外的坐标数据MongoDB 返回错误。
但对于lat,此行为未定义
重要事项默认边界允许应用程序插入 无效纬度大于90或小于-90的文件。该 具有此类无效点的地理空间查询的行为不是 定义
而且很可能这只是强制执行它的php驱动程序(我觉得它很好)。
答案 1 :(得分:0)
这是因为95不是有效的纬度。
在您的应用中,您必须根据此答案中提到的纬度和经度点范围验证您的积分值:https://stackoverflow.com/a/16743805/383478
南半球和北半球的有效纬度范围分别为-90和+90。经度在-180和+180范围内,指定东西方位置。
否则,当用户输入一些实际上无效的数据时,MongoDB将因写入异常而失败。