mongodb GEO2D 指数 - 公里?
mongodb GEO2D Index - kilometers?
我的数据库中有一个地理空间索引。 MongoDB's documentation 表示 $near 运算符采用以米为单位的参数来查找匹配项。例如:
db.data.find({'coordinates': SON([('$near', [20.450550042732765, 80.52327036857605]), ('$maxDistance', 100)])}).count()
应该 return 在该位置的 100 米范围内匹配。但是 returned 太多了,大约有 3,000 个。当我将查询重写为
db.data.find({'coordinates': SON([('$near', [20.450550042732765, 80.52327036857605]), ('$maxDistance', 1)])}).count()
我收到了 364 个结果。我不认为我的数据库在我查询的点的 1 米半径范围内有 364 个匹配项。最后,如果我查询
db.data.find({'coordinates': SON([('$near', [20.450550042732765, 80.52327036857605]), ('$maxDistance', .1)])}).count()
我收到了 330 场比赛。那个点10厘米以内肯定没有330个结果。
我认为 mongodb 将距离解释为公里,而不是米。任何人都可以确认或解释发生了什么事吗?
如果您使用的是遗留的 2d
索引,并且看起来这就是您正在做的事情,那么根据您链接到的文档,$maxDistance
以弧度为单位。
我的数据库中有一个地理空间索引。 MongoDB's documentation 表示 $near 运算符采用以米为单位的参数来查找匹配项。例如:
db.data.find({'coordinates': SON([('$near', [20.450550042732765, 80.52327036857605]), ('$maxDistance', 100)])}).count()
应该 return 在该位置的 100 米范围内匹配。但是 returned 太多了,大约有 3,000 个。当我将查询重写为
db.data.find({'coordinates': SON([('$near', [20.450550042732765, 80.52327036857605]), ('$maxDistance', 1)])}).count()
我收到了 364 个结果。我不认为我的数据库在我查询的点的 1 米半径范围内有 364 个匹配项。最后,如果我查询
db.data.find({'coordinates': SON([('$near', [20.450550042732765, 80.52327036857605]), ('$maxDistance', .1)])}).count()
我收到了 330 场比赛。那个点10厘米以内肯定没有330个结果。
我认为 mongodb 将距离解释为公里,而不是米。任何人都可以确认或解释发生了什么事吗?
如果您使用的是遗留的 2d
索引,并且看起来这就是您正在做的事情,那么根据您链接到的文档,$maxDistance
以弧度为单位。