2011-10-12 47 views
1

我在做一個使用$polygon搜索的地理空間查詢。我的查詢是:使用Polygons和Mongoose進行地理空間查詢有什麼問題?

{ 
    'location_latLong': { 
     '$within': { 
      '$polygon': { 
       point1: { 
        lon: '-74.2621', 
        lat: '40.5788' 
       }, 
       point2: { 
        lon: '-74.2621', 
        lat: '40.8494' 
       }, 
       point3: { 
        lon: '-73.7499', 
        lat: '40.8494' 
       }, 
       point4: { 
        lon: '-73.7499', 
        lat: '40.5788' 
       } 
      } 
     } 
    } 
} 

在我的收藏,我有一個文件,清楚地位於多邊形內:

{ 
    "_id": ObjectId("4e95c285cb8a0efc2b00001a"), 
    "addedOn": Date(1318437509839), 
    "checkinDate": Date(1318392000000), 
    "checkinTime": Date(1318437476000), 
    "location_city": "New York", 
    "location_country": "United States", 
    "location_latLong": { 
     "xLon": -74.007124, 
     "yLat": 40.71455 
    }, 
    "location_source": "personprofile", 
    "location_state": "New York", 
    "location_zip": "" 
} 

和我有一個location_latLong指數2d。我知道MongoDB忽略了鍵名(據推測),所以這應該不重要。那麼爲什麼這會返回0結果呢?

編輯 我只是跑的explain作爲意見建議,我也得到:

{ 
    "cursor" : "GeoBrowse-polygon", 
    "nscanned" : 0, 
    "nscannedObjects" : 0, 
    "n" : 0, 
    "millis" : 0, 
    "nYields" : 0, 
    "nChunkSkips" : 0, 
    "isMultiKey" : false, 
    "indexOnly" : false, 
    "indexBounds" : { 
     "location_latLong" : [ 
      [ 
       [ 
        0, 
        0 
       ], 
       [ 
        0.000021457672119140625, 
        0.000021457672119140625 
       ] 
      ], 
      [ 
       [ 
        -0.000021457672119140625, 
        -0.000021457672119140625 
       ], 
       [ 
        0, 
        0 
       ] 
      ], 
      [ 
       [ 
        -0.000021457672119140625, 
        0 
       ], 
       [ 
        0, 
        0.000021457672119140625 
       ] 
      ], 
      [ 
       [ 
        0, 
        -0.000021457672119140625 
       ], 
       [ 
        0.000021457672119140625, 
        0 
       ] 
      ] 
     ] 
    }, 
    "keysChecked" : NumberLong(8), 
    "lookedAt" : NumberLong(4), 
    "matchesPerfd" : NumberLong(0), 
    "objectsLoaded" : NumberLong(0), 
    "pointsLoaded" : NumberLong(0) 
} 
+0

這個查詢看起來不錯,我不知道確切的問題..你得到一個錯誤消息?你是否在索引中指定了最小/最大範圍.. – RameshVel

+0

我沒有在索引中指定最小/最大範圍,因爲它應該是-180 .. 180,默認情況下,不是? – Shamoon

+0

你可以從公式中刪除貓鼬,並使用'.explain()'從shell中運行它嗎?它可能會澄清發生了什麼 –

回答

1

我解決了這個問題。我正在傳遞字符串,我應該已經通過了花車。

感謝您的時間=)