2016-11-26 32 views
0

我想學習MongoDB的一個類和使用拉鍊數據集(http://media.mongodb.org/zips.json),我試圖找到這些點內的拉鍊:[-80,30],[ -90,30],[-90,40]和[-80,40]。

參考文檔here

後,我想出了這個查詢:

db.zips.find({loc: {$geoWithin : {$geometry : {type : "polygon", coordinates : [[[-80, 30], [-90, 30], [-90, 40], [-80, 40], [-80, 30]]]}}}}) 

我認爲這是可行的,但我得到了以下錯誤:

Error: error: { 
    "waitedMS" : NumberLong(0), 
    "ok" : 0, 
    "errmsg" : "unknown GeoJSON type: { type: \"polygon\", coordinates: [ [ [ -80.0, 30.0 ], [ -90.0, 30.0 ], [ -90.0, 40.0 ], [ -80.0, 40.0 ], [ -80.0, 30.0 ] ] ] }", 
    "code" : 2 
} 

什麼是正確的這樣做的方式?

回答

1

看來你使用了錯誤的地理區域類型,它應該是Polygon嘗試:

db.zips.find({ 
    loc: { 
    $geoWithin: { 
     $geometry: { 
     type: "Polygon", 
     coordinates: [ 
      [ 
      [ 
       -80, 30 
      ], 
      [ 
       -90, 30 
      ], 
      [ 
       -90, 40 
      ], 
      [ 
       -80, 40 
      ], 
      [-80, 30] 
      ] 
     ] 
     } 
    } 
    } 
})