2017-12-05 1 views
0

I이 구조는 여러 문서의 컬렉션이 :지형 공간 쿼리가 작동하지 않습니까?

{ 
    "_id" : ObjectId("5a26b07414e7d436786cfe07"), 
    "location" : { 
     "coordinates" : [ 
      -30.0000019073486, 
      25.0000019073486 
     ], 
     "type" : "Point" 
    }, 
    "refDate" : ISODate("2017-11-23T05:00:00.000Z"), 
    "hourProg" : 0, 
    "value1" : 1, 
    "value2" : 4 
} 

경도의 범위는 [-30] 48]

위도의 범위는 [25; 55]

컬렉션에는 약 60 만 개의 레코드가 포함되어 있습니다. 내가 THW 쿼리를 실행하면

: db.myCollection.createIndex ({ "2dsphere"위치 :}) :

은 내가 2d_sphere 인덱스를 설정 나는 모든 기록을 얻을

db.myCollection.find({ 
    location : { 
     $near : { 
      $geometry : { 
       type : "Point" , 
       coordinates : [-25.27, 25.44] 
      } 
     } 
    } 
}).count() 

을, 그러나 나는 기다리고 있었다 단지 몇 기록 (내 좌표 근처!)

어떤 제안? 미리 감사드립니다.

+0

죄송합니다. $ 근처의 지리 정보 쿼리는 모든 기록을 거리에 따라 내림차순 모드로 정렬합니다! –

답변

0

최대 거리를 설정하지 않았기 때문에 문제가 발생할 수 있습니다.

find() 내부에는 다음과 같은 기능이 있어야합니다.

{ 
    <location field>: { 
    $near: { 
     $geometry: { 
      type: "Point" , 
      coordinates: [ <longitude> , <latitude> ] 
     }, 
     $maxDistance: <distance in meters>, 
    } 
    } 
} 
관련 문제