2014-05-14 2 views
0

에 대한 geoJSOn을 지원합니다. Mongo는 기존 좌표에 2dsphere 색인을 제공하지만 쿼리는 geoJSON 형식의 Point/Shapes에 제시해야합니다. 예를 들어 주소 수집에 다음 레코드를 삽입했습니다. springmongo는 2dsphere 색인

{ "city" : "First", "geo" : [ 13.45, 23.46 ] } 
{ "city" : "Second", "geo" : [ 13.45, 20.46 ] } 

은 그럼 MongoDB를 여전히 기존의 좌표에 2dsphere 인덱스를 허용하는 다음 명령을 사용하여 2dsphere 인덱스를 추가했다.

db.address.ensureIndex({"geo":"2dsphere"}) 

그렇다면 레거시 형식을 사용하여 $ 근근치 쿼리를 수행했지만 예외가 발생했습니다.

> db.address.find({"geo":{$near:{"x":13.45,"y":23.45}}}) 
error: { 
     "$err" : "can't parse query (2dsphere): { $near: { x: 13.45, y: 23.45 } }", 
     "code" : 16535 
} 

하지만 geoJSON 형식으로 동일한 쿼리를 수행하면 결과가 나옵니다.

> db.address.find({"geo":{$near:{"type":"Point",coordinates:[13.45,23.45]}}}) 
{ "_id" : ObjectId("537306b4b8ac1f134d9efe89"), "city" : "First", "geo" : [ 13.45, 23.46 ] } 
{ "_id" : ObjectId("537306c3b8ac1f134d9efe8a"), "city" : "Second", "geo" : [ 13.45, 20.46 ] } 

제 질문은 GeoConverters가 기존 형식으로 변환 한 것입니다. 그래서, 분명히 그들은 2dsphere 인덱스를 사용하면 작동하지 않을 것입니다. geoJSON 형식으로 변환 할 수있는 변환기가 있습니까? 해결 방법이 있습니까?

답변

0

현재 spring-data-mongo는 새로운 mongo (> 2.4) 2dsphere 색인을 지원하지 않습니다. Jira에 대한 공개 문제가 있습니다. https://jira.spring.io/browse/DATAMONGO-1113?jql=project%20%3D%20DATAMONGO%20AND%20text%20~%20%22%24geometry%22

링크에서 이러한 변환기를 만드는 방법에 대한 예를 볼 수 있습니다. 이것을 사용하거나이 제한을 극복하여 spring-data-mongo가 실행하고자하는 쿼리로 @Query을 생성 할 수 있습니다.

감사합니다.

avaz

관련 문제