2011-10-12 3 views
1

$polygon 검색을 사용하여 지형 공간 쿼리를 수행하고 있습니다. 내 질문은 다음과 같습니다다각형과 몽구스를 사용하는 지형 공간 쿼리에있어 문제점은 무엇입니까?

내 컬렉션에서
{ 
    '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_latLong2d 인덱스가 있습니다. 나는 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()'을 사용하여 쉘에서 이것을 실행할 수 있습니까? 무슨 일이 일어나는지 명확히 할 수 있습니다. –

답변

1

내가 문제를 해결했다. 나는 Strings를 지나가고 있었고 나는 수레를 건네 줘야했다.

시간 내 주셔서 감사합니다. =)