2012-11-19 2 views
0

Geonames의 정보가 담긴 Access 2010 데이터베이스가 있습니다. 테이블 이름은 cities입니다. 단순화를 위해 열은 "이름", "위도", "경도", "loc"입니다. "long"과 "latitude"를 하나의 필드에 결합하여 MongoDB의 지형 공간 인덱스를 사용할 수 있도록 "loc"을 만들었습니다. 사이에 쉼표로 두 개의 10 진수 값을 결합하므로 "loc"열을 문자열 형식으로 저장해야했습니다.Geonames 및 MongoDB : 지형 공간 인덱스를 사용하기 위해 Access 2010을 MongoDB로 내보내기

이 표를 CSV로 내보낼 때 "경도"와 "위도"를 건너 뛰고 결합 된 "위치"필드가 새로 생겼습니다. 나는 "도시"모음으로 MongoImport를 실행 한 후

"geonameid", "name", "loc" 
1, "Sweden", "18.068287,59.336341" 

의 LOC 필드가 같은 인용 부호로 포용 : 여기에서

{ "_id" : ObjectId("50a9ed157db1bcfe22cddd0a"), "geonameid" : 20, "name" : "Sweden", "loc" : "18.068287,59.336341", } 

내가 명령을 실행

csv로는 같다 "loc"을 배열로 바꾼다. I에 유래 여기에 또 다른 기여에 다음 명령 감사를 사용

db.cities.find({ 'loc' : {$type : 2 } }).forEach(function (x) { x.loc = new Array(x.loc); db.cities.save(x); }); 

결과는 다음과 같습니다 내 GPS는 "LOC"필드에 좌표에서

{ "_id" : ObjectId("50a9ed157db1bcfe22cddd0a"), "geonameid" : 20, "name" : "Sweden", "loc" : [ "18.068287,59.336341" ], } 

어떻게 인용 부호를 제거 할 수 있습니까? 자바에서 코드를 작성할 수없고 MongoDB가이 작업을 수행하기를 기다리지 않아도됩니다. "경도"와 "위도"필드가 포함 된 CSV를 내보내고 MongoDB의 새로운 "loc"필드에 결합하면 효과적이지 않을지라도 상관 없습니다. geospatial 인덱스로 작업하는 "loc"필드를 가져와야합니다.

답변

0

숫자를 "loc"파일에 결합 했으므로 이제는 문자열이고 따옴표가 붙습니다. MongoDB로 가져 오기 전에 숫자로 다시 구분하십시오.

GEOindex와 함께 사용하려면 "loc"필드가 필요하며 CSV에서는 배열을 사용할 수 없습니다. http://www.divconq.com/2010/export-a-microsoft-access-database-to-json/

+0

JSON에 대해 동의하며 테스트 .json 문서를 만들고 "loc"가져 오기를 정상적으로 수행했습니다. 불행히도 연결된 cmd 도구에 깨진 AWS S3 링크가 있습니다. 게시자에게 트위터를 썼는데 잘하면 연계 된 링크를 제공 할 수 있습니다. – Karl

+0

답변을 '수락'으로 표시하는 것을 잊지 마세요. – oyatek

1

입니다 가능한 지리 공간 배열에 LOC를 설정하는 명령 - 당신은 "mongoimport --jsonArray"명령 JSON에

내보내기 Access를 사용하여 MongoDB에 JSON을 JSON에 MS 액세스에서 데이터를 내 보낸 다음 가져올 수있는 방법을 찾아야 :

db.cities.find({ 'loc' : {$type : 2 } }).forEach(function (x) { x.loc = x.loc.split(",").map(parseFloat); db.cities.save(x); }); 
관련 문제