MongoDB вставляет геопункт в неправильном порядке

Я пытаюсь вставить местоположение в MongoDB.
Я знаю, что местоположение должно быть в долготе, широте.
это мой код PHP:

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

При промывке я получаю эту ошибку:

insertDocument :: вызвано :: 16755 Невозможно извлечь гео-ключи из
объект, неправильная геометрия ?: {_id:
ObjectId (‘54510e88211b6f133e8b4573’), координаты: {lat:
35.72701023223023, lng: 137.094778418541},

Почему координаты изменили порядок? Я установил их на широту и долготу, почему объект инвертирован?
Я был точным при создании объекта, что долгота перед широтой.
Помогите, пожалуйста

0

Решение

2D документация по индексированию советует использовать кортежи долготы / широты вместо встроенных объектов, поскольку вы лучше контролируете порядок полей.

Массивы предпочтительнее, так как некоторые языки не гарантируют ассоциативное упорядочение карт.

В вашем случае двумерное значение координаты лучше всего отображается как Коллекция введите ODM, чтобы убедиться, что он хранится как массив BSON в MongoDB.

Если вы используете 2dsphere индекс со значениями GeoJSON, поле лучше всего отображается как гашиш, который обеспечит хранение объекта BSON. Оттуда вы можете создать значение GeoJSON самостоятельно в PHP (мой GeoJSON библиотека может быть полезна). Маршрут с хэш-отображением должен быть более гибким, чем создание встроенных документов с конкретным GeoJSON. type а также coordinates поля размечены (см. этот разговор в Твиттере для некоторой дискуссии на эту тему). В конечном счете, было бы неплохо, чтобы ODM поддерживал GeoJSON в качестве отображаемого типа поля (для преобразования объектов MongoDB BSON в / из классов GeoJSON).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]