2012-09-15 2 views
0

mongo db 컬렉션에서 경계 상자 쿼리를 수행하려고합니다. 그 콜렉션은 꽤 오랫동안 있었으며, 최근 Mongodb 2.2의 새로운 기능을 이용하기 위해 드라이버를 1.3에서 1.6으로 업그레이드했습니다. 다음 쿼리가 작동하지 않습니다.Mongodb C# 드라이버 - 경계 상자 쿼리 (잠재적 인 드라이버 버그)

var query = Query<TrafficUpdate>.WithinRectangle(x => x.Loc, lowerLeft.Lon, lowerLeft.Lat, upperRight.Lon, upperRight.Lat); 

위의 줄은 더 이상 작동하지 않습니다. ".....에 대한 특별 색인을 찾을 수 없습니다."에 대한 오류가 다시 나타납니다.

도움이 되셨을 것입니다.

감사합니다.

답변

0

실제로 답변을 찾았습니다. 드라이버에 버그가 있어야합니다. 속성 Loc은 컬렉션에서 "loc"으로 자동 매핑되어야합니다. 이것은 db에 쓰거나 읽을 때 잘 작동합니다. 그러나 WithinRectangle 쿼리 (.Near 쿼리와 동일)의 경우 위에서 언급 한 오류가 발생합니다.

대답은 명시 적으로 구성 속성을 매핑하는 것입니다

cm.MapProperty(c => c.Loc).SetElementName("loc");` 

어쩌면이 어떤 사람들을 도움이 될 것입니다.

+0

자바 스크립트는 대소 문자를 구분합니다. "Loc"은 "loc"과 동일하지 않습니다. 따라서 색인이 "loc"이라는 필드에있는 경우 "Loc"을 사용하면 작동하지 않습니다. 나는 인서트와 업데이트가 작동한다고 말하는 것을 듣고 놀랍지가 않다. MongoDB는 스키마를 시행하지 않습니다. 따라서 삽입 및 업데이트는 "loc"이 아닌 "Loc"이라는 필드에 쓰고 있었고 경계 상자 쿼리에서 고려되지 않습니다. –