2012-09-15 52 views
0

我想對mongo db集合執行邊界框查詢。該集合已經存在了很長一段時間,我最近將我的驅動程序從1.3升級到1.6,以充分利用Mongodb 2.2中的一些新功能。以下查詢不起作用:Mongodb C#驅動程序 - 邊界框查詢(潛在的驅動程序錯誤?)

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

雖然上面的行不工作了。回來一個關於「找不到特殊索引2d .....」的錯誤。

任何幫助,將不勝感激。

謝謝。

回答

0

剛剛找到答案。司機必須有一個錯誤。屬性Loc應該自動映射爲集合中的「loc」。在寫入數據庫或從數據庫讀取時,這工作得很好。但是在內部矩形查詢(與.Near查詢相同)的情況下,它會拋出上面提到的錯誤。

答案是物業在配置顯式地映射:

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

也許這將幫助一些人。

+0

請記住,javascript區分大小寫。 「Loc」不等於「loc」。因此,如果您的索引位於名爲「loc」的字段上,那麼使用「Loc」將不起作用。聽到你說插入和更新工作,我並不感到驚訝。 MongoDB不強制執行模式。因此,您的插入和更新將寫入名爲「Loc」的字段,而不是「loc」,並且不會在您的邊界框查詢中考慮。 –