簡體   English   中英

Mongodb地理空間查詢未報告球形包裹錯誤,但返回了奇怪的結果

[英]Mongodb geo-spatial query not reporting an error on spherical wrapping, but returning a weird result

查詢地理空間數據時,我的行為很奇怪。

文檔

目前,我們不處理極點處或從-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
}

我已經在2.0.7和2.2.1上都嘗試過,但是我得到的行為與您不同。

我為兩個版本都這樣做了:

t = db.test
t.drop()
t.insert({geo: [179,0]})
t.ensureIndex({geo: "2d"})

在2.0.7中,我運行了:

db.runCommand({geoNear:"test", near:[-179,0], spherical:true, maxDistance:1.0})
db.runCommand({geoNear:"test", near:[-179,0], spherical:true, maxDistance:0.9})

並各自返回結果。

但是,對於2.2.1,兩個搜索均未返回結果。 這表明在2.2.1中沒有環繞記錄,但是在2.0.7中存在環繞。

這非常荒謬,但是嘗試使用“ sperical”而不是“球形”。

它適合我的情況。

我不知道為什么,現在我正在尋找答案,但找不到任何答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM