我正在使用带有mongo Db数据库的Laravel 5。我已经使用jenssegers / laravel-mongodb包来处理所有与mongo相关的函数。一切都很好。
但是当我根据mongodb的这个链接([Geo near query link] [1])提供的信息尝试geonear时。我工作得很好。我使用以下查询来获取我的集合的所有记录之间的距离。
命令: -
({ 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 :(得分: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 ));