그래서 등의 모음이 있습니다MongoDB를 지리 공간 쿼리
db.records.save({ name : "John Smith", addresses : [ { context : "home" , loc : [ 55.5, 42.3 ] } , { context : "work", loc : [ -74 , 44.74 ] } ] })
을 그리고는 다음과 같이 인덱스를 만들었습니다 : 내가하려고 할 때 이제
db.records.createIndex({ "addresses.loc": "2d" })
및 다음과 같은 검색어를 만드십시오.
db.Company.findOne({ "stores.loc" : { $near :[55.5, 42.3]}})
내가 얻을 것으로 예상되는 주소 배열은 과 일치합니다. 관련 주소는이며, 주소는 모두 죤 스미트입니다. 잘 모르겠습니다.
어떻게 해결할 수 있습니까? 이것은 당신이 문서에서 하나 개의 주소를 가지고 다음 그곳에서 가장 가까운 노드를 얻을 수 있도록 스키마를 변경할 수있는 경우에 고정 할 수 있습니다
John의 모든 주소를 하나의 문서에 포함시키는 특별한 이유가 있습니까? – abhinsit
모든 위치는 하나의 문서 안에 있기 때문에'[55.5, 42.3]'근처에서 문서를 찾아서 전체 문서를 반환합니다. 어쩌면 스키마를 "평평하게"하는 것을 고려할 수도 있습니다 (즉, 각 주소에 대해 하나의 문서 사용). – Adam