Php MongoDB以错误的顺序插入地质点

Php MongoDB以错误的顺序插入地质点,php,json,mongodb,symfony,doctrine-odm,Php,Json,Mongodb,Symfony,Doctrine Odm,我正在尝试在MongoDB中插入一个位置。 我知道位置应该按经度、纬度顺序排列。 这是我的PHP代码: ... $coordinates=new Coordinates(); $coordinates->setLng($lng); $coordinates->setLat($lat); $hospitals->setCoordinates($coordinates); ... 刷新时,我收到以下错误: insertDocument::由::16

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

...
    $coordinates=new Coordinates();
    $coordinates->setLng($lng);
    $coordinates->setLat($lat);
    $hospitals->setCoordinates($coordinates);
...
刷新时,我收到以下错误:

insertDocument::由::16755导致无法从中提取地理键 对象,几何体格式错误?:{u id: ObjectId('54510e88211b6f133e8b4573'),坐标:{lat: 35.72701023223023,液化天然气:137.094778418541}

为什么坐标会颠倒顺序?我将它们设置为经纬度,为什么对象会反转?
我在创建经度早于纬度的对象时非常精确。
请提供帮助

建议使用经度/纬度元组而不是嵌入对象,因为您可以更好地控制字段顺序

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

在您的例子中,二维坐标值最好映射为ODM中的类型,这将确保它在MongoDB中存储为BSON数组


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

好的
setLng
setLat
setCoordinates
不是MongoDB驱动程序方法。也许可以解释一下你正在使用的库。或者你已经实现的代码。这不值得在这种形式下投票。不管是谁做的,都是个坏家伙。也许我忘了提到我正在使用ODM doctrineMight。一个版本n也许?这是否可能导致你真的应该问谁序列化问题呢?是的,也许,既然你提到了序列化,我会尝试自己调试它。是的,你的数据格式并不完全是由它的外观支持的。你应该转移到GeoJSON存储,忘记任何“leagcy”数组或“键/值”对的存储格式。可能是ODM的错误。错误的ODM。坐下。错误的ODM。