Я использую Laravel 5 с базой данных mongo Db. Я использовал пакет jenssegers/laravel-mongodb для всех связанных с mongo функций. Все работает нормально.
Но когда я попытался geonear в соответствии с информацией, поставьте ссылку на эту ссылку ([Geo near query link] [1]) mongodb. Я отлично работаю. Я использовал следующий запрос, чтобы получить расстояние между всеми записями моей коллекции.
Команда: -
({ geoNear: "sale_event",
near: {
type: "Point",
coordinates: [ 76.7171945,30.7291196 ]
},
spherical: true,
})
этот запрос отлично работает в командной строке и дает мне дистанцию с результатом: -
{
"results" : [
{
"dis" : 0,
"obj" : {
"_id" : ObjectId("568e01fc04896fcd208b4575"),
"seller_rating" : "4.5",
"latLong" : [
76.7171945,
30.7291196
],
"description" : "Where'd",
"updated_at" : ISODate("2016-01-07T06:13:16.152Z"),
"created_at" : ISODate("2016-01-07T06:13:16.150Z")
}
},
{
"dis" : 244708.75191385587,
"obj" : {
"_id" : ObjectId("568e01eb04896fcd208b4574"),
"seller_rating" : "4.5",
"latLong" : [
77.0999578,
28.5561624
],
"description" : "Where'd",
"updated_at" : ISODate("2016-01-07T06:12:59.263Z"),
"created_at" : ISODate("2016-01-07T06:12:59.261Z")
}
}
],
"stats" : {
"nscanned" : 20,
"objectsLoaded" : 2,
"avgDistance" : 122354.37595692794,
"maxDistance" : 244708.75191385587,
"time" : 3
},
"ok" : 1
}
Но когда я использовал ту же команду в laravel, это не дало мне такого же результата:
Я добавил следующий метод для запуска той же команды.
$r = DB::command(array( 'geoNear' => "sale_events",
'near' => array( 'type' => "Point", 'coordinates' => array('76.7171945','30.7291196')), 'spherical' => true ));
Это дает мне следующий результат:
Array
(
[ok] => 0
[errmsg] => can't find ns
)
Пожалуйста, помогите мне, как я могу получить расстояние в laravel в соответствии с широтой и долготой с mongodb в laravel.
Возможно, вы захотите создать новый экземпляр базы данных. Этот запрос очень хорошо работает на Laravel 5:
$mongodb = \DB::getMongoDB();
$lat = 3.1416;
$lng = -99.99999;
$near = $mongodb->command(array(
'geoNear' => "sale_events",
'near' => array(
'type' => "Point",
'coordinates' => array(
$lng,
$lat
)
),
'spherical' => true,
'maxDistance' => 2500 ));