【发布时间】:2020-10-21 21:34:12
【问题描述】:
在我的数据库中有 cmets,每个评论都有每个国家的经纬度,但 MongoDB 给出的结果不准确,即我在查询中提供巴西 [经纬度] 作为输入
db.posts.aggregate([ { "$geoNear": {
"near": [-69.7145414,-13.6574511 ],
"spherical": true,
"distanceField": "distance",
"num":1000000,
"query":{"post_id":"5efc430e25a363375860e842",}
}},
{
"$sort":{"distance":1}
} ])
我得到的结果是
- 玻利维亚(距巴西 409.5 公里)
- 巴拉圭(距巴西 1293 公里)
- 秘鲁(距巴西 1645 公里)
- 圭亚那(距巴西 1188 公里)
你可以看到
- 结果 4 接近而不是结果 2,因此它应该在位置 2 这就是我得到不准确结果的原因。
使用本网站计算的距离: https://www.movable-type.co.uk/scripts/latlong.html
我使用的经纬度如下
"Bolivia" => [
"latitude" => -16.0705819,
"longitude" => -72.5931926
],
"Paraguay" => [
"latitude" => -23.3601858,
"longitude" => -62.9462413
],
"Peru" => [
"latitude" => -9.1084506,
"longitude" => -84.0750546
],
"Guyana" => [
"latitude" => 4.9392707,
"longitude" => -63.4541328
],
"Brazil" => [
"latitude" => -13.6574511,
"longitude" => -69.7145414
]
【问题讨论】:
-
你认为 [-69.7145414,-13.6574511] 是巴西吗?这是秘鲁。
-
将输入数据添加到您的问题中,以显示您正在查询的距离(理想情况下可由其他人运行)。
-
@Werfried 它是巴西的长纬度...您可以从这里验证它google.com/maps/place/Brazil/@-13.6574511,-69.7145414,4z/…
-
@D.SM 忘记 num.. 假设 num 不存在.. 结果仍然不准确
标签: laravel mongodb aggregation-framework geo