У меня проблемы с вставкой записи Mongodb с геопространственными данными в PHP - PullRequest
1 голос
/ 21 февраля 2012

Я пытаюсь вставить запись, которая содержит вложенный массив геопространственных данных.Я даже пытался сделать массив объектом вместо этого, но и там мне не повезло.Вот более или менее строка вставки:

$collection->insert($obj, array('safe'=>true));

Одна интересная вещь заключается в том, что когда я называю индекс 'loc' чем-то другим, например, просто целым числом, вставка работает.

Вотмассив, который должен идти в Mongodb, но не:

Array
(
  [name] => Home
  [address] => 500 Pole Line Road
  [city] => Davis
  [state] => CA
  [zip] => 95618
  [loc] => Array
    (
      [lon] => -121.726710
      [lat] => 38.549576
    )

)

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012
array( 'loc' => array( floatval($lon),  floatval($lat)))
0 голосов
/ 21 февраля 2012

MongoDB не заботится о ключах для геопространственного "поля".Это только берет первые два элемента с первым, являющимся долготой, и второй широтой.Даже если вы назовете свой первый «лат», он все равно будет восприниматься как долгота.Единственная причина, по которой я мог подумать, что он не будет вставлен, - возможно, у вас есть уникальный ключ в некоторых полях.

Если вы добавите полностью рабочий (но небольшой) пример того, что вы вставляете, то яможно обновить ответ, чтобы, надеюсь, показать, что не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...