我正在使用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的新手。
答案 0 :(得分:1)
您可以像laravel-mongodb的README.md
中所说的那样执行此操作:
$users = User::where('location', 'near', [
'$geometry' => [
'type' => 'Point',
'coordinates' => [
-0.1367563,
51.5100913,
],
],
'$maxDistance' => 50,
]);
注意:按此顺序指定坐标:经度,纬度。
您的收藏集应该有2dsphere
索引:https://docs.mongodb.com/manual/core/2dsphere/
集合的一个例子:
{
loc : { type: "Point", coordinates: [ -73.97, 40.77 ] },
name: "Central Park",
category : "Parks"
}
的详细信息