【问题标题】:Mongodb C# driver - Bounding box query (potential driver bug?)Mongodb C# 驱动程序 - 边界框查询(潜在的驱动程序错误?)
【发布时间】:2012-09-15 18:01:14
【问题描述】:

我正在尝试对 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);

以上行不再起作用了。返回有关“找不到特殊索引 2d .....”的错误

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: mongodb mongodb-.net-driver


    【解决方案1】:

    实际上刚刚找到了答案。驱动程序中一定有错误。属性 Loc 应在集合中自动映射为“loc”。这在向数据库写入或读取时工作得很好。但是对于 WithinRectangle 查询(对于 .Near 查询也是如此),它会引发上述错误。

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

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

    也许这会对某些人有所帮助。

    【讨论】:

    • 请记住,javascript 区分大小写。 “Loc”不等于“loc”。因此,如果您的索引位于名为“loc”的字段上,则使用“Loc”将不起作用。听到您说插入和更新有效,我并不感到惊讶。 MongoDB 不强制执行模式。因此,您的插入和更新正在写入名为“Loc”的字段,而不是“loc”,并且不会在您的边界框查询中考虑。
    猜你喜欢
    • 2012-03-04
    • 2016-03-13
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多