地理空間データのクエリを実行すると、奇妙な動作が発生します。
ドキュメントから:
現在、極または経度 -180° から +180° への遷移でのラップは処理していませんが、検索がラップしてエラーを発生させるタイミングを検出します。
ただし、オブジェクトが 1 つあり、最大距離が 0.9 の[179,0]
近くのオブジェクトをクエリすると、オブジェクトが返され、計算された距離は 2 度です。[-179,0]
エラーは発生しません。
同じ場所をクエリしても、最大距離が 1.0 の場合、オブジェクトは返されず、エラーも発生しません。
これはバグですか、それとも何か見逃していますか? ジラでそれについて報告されたバグは見つかりませんでした。
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
}