繁体   English   中英

如何使用Laravel雄辩的经纬度从mongodb获取位置?

[英]How to fetch location from mongodb based on latitude and longitude using Laravel eloquent?

我正在使用Moloquent模型从Laravel中的MongoDB获取数据。

除了获取基于纬度和经度的数据外,其他一切都很好。 这是我的收藏集的外观:

{
   "_id" : "some_id",
   "place_id" : "353789030392849490",
   "latitude": "22.5726",
   "longitude" : "88.3639"
}

在MySQL和Laravel Eloquent中,我们可以使用纬度和经度来获取数据,如下所示:

DB:select("SELECT id, (
    6371 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
    * cos( radians( long ) - radians(-122) )
    + sin( radians(37) ) * sin(radians(lat)) )
) AS distance 
FROM myTable
HAVING distance < 50
ORDER BY distance")->get();

我可以使用Laravel Eloquent从MongoDB获取数据吗? 还是我需要以其他方式做到这一点?

PS。 我是MongoDB的新手。

您可以按照laravel-mongodbREADME.md中所述的README.md进行操作

$users = User::where('location', 'near', [
    '$geometry' => [
        'type' => 'Point',
        'coordinates' => [
            -0.1367563,
            51.5100913,
        ],
    ],
    '$maxDistance' => 50,
]);

注意:请按以下顺序指定坐标:经度,纬度。

您的集合应具有2dsphere索引: https : 2dsphere

集合示例:

{
    loc : { type: "Point", coordinates: [ -73.97, 40.77 ] },
    name: "Central Park",
    category : "Parks"
}

有关$near更多信息: https : //docs.mongodb.com/manual/core/2dsphere/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM