2016-01-12 1 views
1

Я использую Laravel 5 с базой данных mongo Db. Я использовал пакет jenssegers/laravel-mongodb для всех связанных с mongo функций. Все работает нормально.Mongo db geo около не работает в laravel

Но когда я попробовал geonear в соответствии с информацией, предоставленной по этой ссылке ([Geo near query link] [1]) of 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.

ответ

0

Возможно, вы захотите создать новый экземпляр базы данных. Этот запрос очень хорошо работает на 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)); 

 Смежные вопросы

  • Нет связанных вопросов^_^