Mongodb C#驱动程序-边界框查询(潜在驱动程序错误?)

Mongodb C#驱动程序-边界框查询(潜在驱动程序错误?),mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我正在尝试对mongo db集合执行边界框查询。该系列已经存在了很长一段时间,我最近将我的驱动程序从1.3升级到1.6,以利用Mongodb 2.2中的一些新功能。以下查询不起作用: var query = Query<TrafficUpdate>.WithinRectangle(x => x.Loc, lowerLeft.Lon, lowerLeft.Lat, upperRight.Lon, upperRight.Lat); var query=query.WithinRe

我正在尝试对mongo db集合执行边界框查询。该系列已经存在了很长一段时间,我最近将我的驱动程序从1.3升级到1.6,以利用Mongodb 2.2中的一些新功能。以下查询不起作用:

var query = Query<TrafficUpdate>.WithinRectangle(x => x.Loc, lowerLeft.Lon, lowerLeft.Lat, upperRight.Lon, upperRight.Lat);
var query=query.WithinRectangle(x=>x.Loc,lowerLeft.Lon,lowerLeft.Lat,upperRight.Lon,upperRight.Lat);
不过,上面的这一行已经不起作用了。返回时出现一个关于“找不到针对…..的特殊索引2d”的错误

任何帮助都将不胜感激


谢谢。

刚刚找到了答案。驱动程序中一定有错误。属性Loc应在集合中自动映射为“Loc”。在向数据库写入或从数据库读取数据时,这种方法非常有效。但是在WithinRectangle查询(与.Near查询相同)的情况下,它抛出上述错误

答案是在配置中显式映射属性:

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

也许这会帮助一些人。

记住javascript是区分大小写的。“Loc”不等于“Loc”。因此,如果索引位于名为“loc”的字段上,则使用“loc”将不起作用。听到您说插入和更新可以工作,我并不感到惊讶。MongoDB不强制实施模式。因此,您的插入和更新写入了一个名为“Loc”的字段,而不是“Loc”,因此不会在边界框查询中考虑。