MongoDb 2.6.1错误:17444-“;“传统点超出球形查询的范围”;

MongoDb 2.6.1错误:17444-“;“传统点超出球形查询的范围”;,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,在我的系统n中将MongoDb升级到2.6.1后,有时会出现以下错误: 传统点超出球形查询的范围 错误代码17444 在这里: 我可以看到,这是由mongo db由于一些无效数据引起的 // The user-provided point can be flat. We need to make sure that it's in bounds. if (isNearSphere) { uassert(17444, "Legacy point is out of

在我的系统n中将MongoDb升级到2.6.1后,有时会出现以下错误:

传统点超出球形查询的范围

错误代码17444

在这里: 我可以看到,这是由mongo db由于一些无效数据引起的

// The user-provided point can be flat.  We need to make sure that it's in bounds.
if (isNearSphere) {
    uassert(17444,
            "Legacy point is out of bounds for spherical query",
            centroid.flatUpgradedToSphere || (SPHERE == centroid.crs));
}
但目前我不知道为什么以及如何预防它

我的代码如下所示:

IEnumerable<BsonValue> cids = companyIds.ToBsonValueArray();


    return Collection.Find(
                            Query.And(
                               Query.In("CompanyId", cids),
                               Query.Near("Location", location.Geography.Longitude, location.Geography.Latitude, location.Radius / 6371000, true))).ToList();
IEnumerable cids=companyId.ToBsonValueArray();
返回集合。查找(
查询.及(
Query.In(“公司ID”,cids),
Query.Near(“Location”,Location.Geography.Longitude,Location.Geography.lation,Location.Radius/6371000,true)).ToList();
堆栈跟踪:

QueryFailure标志为旧点,该点超出球形的界限 查询(响应为{“$err”):“遗留点超出 球形查询,“代码”:17444})。 在MongoDB.Driver.Internal.MongoReplyMessage
1.ReadFrom(BsonBuffer buffer,IBsonSerializationOptions serializationOptions)
在MongoDB.Driver.Internal.MongoConnection.ReceiveMessage[TDocument](BsonBinaryReaderSettings)中
readerSettings、IBMSOnSerializer序列化程序、IBMSOnSerializationOptions
序列化选项)
在MongoDB.Driver.Operations.QueryOperation中
1.GetFirstBatch(IConnectionProvider 连接提供者)


您正在使用MongoDB 2.6.1或更高版本,因为您正在查看的代码是作为问题的修复添加的

问题是,当使用超出范围的旧坐标调用MongoDB服务器时,一些$near查询会崩溃

您发送的坐标可能超出范围。代码的一部分,用于在使用最大距离执行$near查询时检查经度和纬度(
GeoParser::parsePointWithMaxDistance
中的方法):


您正在使用MongoDB 2.6.1或更高版本,因为您正在查看的代码是作为问题的修复添加的

问题是,当使用超出范围的旧坐标调用MongoDB服务器时,一些$near查询会崩溃

您发送的坐标可能超出范围。代码的一部分,用于在使用最大距离执行$near查询时检查经度和纬度(
GeoParser::parsePointWithMaxDistance
中的方法):


谢谢你的回复。因此,如果我理解正确的话,问题可能是他们的时间更长了,而2.6.1的更新只会因为这个断言而暴露出来。对吗?我会检查我是否能得到一些错误日志,也许我以前在解决半径和或coordinates@BoasEnkler我真的不知道这个问题是如何存在的,但在JIRA中,受影响的版本是2.6,所以我想这是一个“最近”才出现的bug介绍。我的意思是,我可能在计算坐标时有一个较长时间的错误,错误只有在更新时才暴露出来。(如果我没听错的话)@BoasEnkler抱歉我误解了你。我想您的代码中的问题以前就存在过,但在MongoDB端直到现在都没有一个防范措施。因此,这将是合乎逻辑的,因为我们有一个组件可能会不时出现问题,以解决您的答复协调HX。因此,如果我理解正确的话,问题可能是他们的时间更长了,而2.6.1的更新只会因为这个断言而暴露出来。对吗?我会检查我是否能得到一些错误日志,也许我以前在解决半径和或coordinates@BoasEnkler我真的不知道这个问题是如何存在的,但在JIRA中,受影响的版本是2.6,所以我想这是一个“最近”才出现的bug介绍。我的意思是,我可能在计算坐标时有一个较长时间的错误,错误只有在更新时才暴露出来。(如果我没听错的话)@BoasEnkler抱歉我误解了你。我想您的代码中的问题以前就存在过,但在MongoDB端直到现在都没有一个防范措施。因此,这是合乎逻辑的,因为我们有一个组件,它可能会不时出现解决坐标问题的问题
bool isValidLngLat(double lng, double lat) {
    return lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
}
Query.Near("Location", location.Geography.Longitude, 
           location.Geography.Latitude, location.Radius / 6371000, false)