簡體   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