Как получить расстояние с $ рядом?

Я могу получить свои элементы с помощью следующего кода:

$lines = $loc->find(
array("loc" =>
array('$near' =>
array('$geometry' =>
array('type' => 'Point', 'coordinates' =>
array(floatval($longitude), floatval($latitude))
),

'$maxDistance' => 10000 //meters
)
)
)
);

Это результаты:

Array
(
[_id] => MongoId Object
(
[$id] => 5490003c815289663d8bbd95
)

[name] => My adress
[loc] => Array
(
[type] => Point
[coordinates] => Array
(
[0] => 5.050948
[1] => 45.040419
)

)

)

Но теперь мне нужно получить расстояние от моей заданной точки.

Является ли это возможным ?

РЕДАКТИРОВАТЬ :

Это код, используемый для вставки данных:

$loc = $client->localisation->localisation;
$loc->ensureIndex( array("loc" => "2dsphere"));

$loc->insert(
array(
"idobject" => $myValue
"name" => $myName
"loc" => array("type" => "Point", "coordinates" => array($longitude, $latitude))
));

1

Решение

$near оператор не возвращает расстояние вместе с возвращенными результатами. Заказывает только документы в ответе.

Под драйвером PHP проще всего использовать $geoNear этап агрегации вместо. Это позволяет вам проецировать поле в результатах или даже использовать его на других этапах конвейера:

$loc->aggregate(
array(
array(
'$geoNear' => array(
'near' => array(
'type' => 'Point',
'coordinates' =>array(floatval($longitude), floatval($latitude))
),
'maxDistance' => 1000,
'distanceField' => 'distance',
'spherical' => true
)
)
)
);

Существует форма команды базы данных для geoNear также, но прямые результаты команды часто не так хороши.

1

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

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