查询地理空间数据时,我有一个奇怪的行为。
从文档:
我们目前不处理极点处或经度从 -180° 到 +180° 的过渡处的环绕,但是我们会检测搜索何时会环绕并引发错误。
但是,我有一个对象,[179,0]
如果我查询[-179,0]
最大距离为 0.9 的附近对象,则返回该对象并且计算的距离为 2 度。不会引发错误。
如果我查询相同的位置,但最大距离为 1.0,则不会返回对象并且仍然没有错误。
这是一个错误还是我错过了什么?我在 jira 上找不到任何报告的错误。
PRIMARY> version()
version: 2.0.7
PRIMARY> db.runCommand({geoNear:"GeoBug",near:[-179,0],spherical:true,maxDistance:1.0})
{
"ns" : "mydb.GeoBug",
"near" : "0100000000000000100010100010100000000000100010100010",
"results" : [
{
"dis" : 0.03490658503988567, (2 degrees)
"obj" : {
"_id" : ObjectId("5098e71b744eca2df1b325f2"),
"location" : {
"lonlat" : [
179,
0
]
}
}
}
],
"stats" : {
"time" : 0,
"btreelocs" : 0,
"nscanned" : 2,
"objectsLoaded" : 1,
"avgDistance" : 0.03490658503988567,
"maxDistance" : 0.03490689563235392
},
"ok" : 1
}
PRIMARY> db.runCommand({geoNear:"GeoBug",near:[-179,0],spherical:true,maxDistance:0.9})
{
"ns" : "mydb.GeoBug",
"near" : "0100000000000000100010100010100000000000100010100010",
"results" : [ ],
"stats" : {
"time" : 0,
"btreelocs" : 0,
"nscanned" : 1,
"objectsLoaded" : 0,
"avgDistance" : NaN,
"maxDistance" : 0
},
"ok" : 1
}