MongoDB以错误的顺序插入地理点


MongoDB inserts geopoint in the wrong order

我正试图在MongoDB中插入一个位置
我知道这个位置应该按照经度、纬度的顺序排列。这是我的PHP代码:

...
    $coordinates=new Coordinates();
    $coordinates->setLng($lng);
    $coordinates->setLat($lat);
    $hospitals->setCoordinates($coordinates);
...

当刷新时,我得到这个错误:

insertDocument::由:16755 Can';引起;t从中提取地理键对象,格式不正确的几何体?:{_id:ObjectId(';54510e88211b6f133e8b4573';),坐标:{lat:35.72701023223023,lng:137.09477418541},

为什么坐标颠倒了顺序?我把它们设置为经纬度,为什么物体是倒置的
我在创建对象时很精确,经度在纬度之前
请帮助

2d索引文档建议使用经度/纬度元组而不是嵌入对象,因为您可以更好地控制字段排序。

数组是首选,因为某些语言不能保证关联映射排序。

在您的情况下,2d坐标值最好在ODM中映射为Collection类型,这将确保它在MongoDB中存储为BSON数组。

如果使用具有GeoJSON值的2dsphere索引,则字段最好映射为Hash,这将确保BSON对象存储。从那里,您可以自己用PHP创建GeoJSON值(我的GeoJSON库可能会有所帮助)。哈希映射的路由应该比使用映射的特定GeoJSON typecoordinates字段创建嵌入文档更灵活(有关该主题的一些讨论,请参阅本次Twitter对话)。最终,ODM支持GeoJSON作为映射字段类型(将MongoDB BSON对象转换为GeoJSON类或从GeoJSON类转换为GeoJSON对象)也是很好的。