[英]Use $geoWithin operator in C#
目前在一个项目中,我正在使用查询来查找 x 英里范围内的集合中的所有内容。 阅读 mongodb 文档,它指出 $within 运算符已弃用,您应该使用 $geoWithin 查询运算符。
我正在使用 Mongodb 查询构建器(见下文)
Query<Stuff>.WithinCircle(x => x.LongLat, longitude, latitude, radians, true)
我注意到它创建的查询使用 $within 运算符而不是 $geoWithin 运算符。 由于我们已升级到 Mongodb 2.4.x,我没有看到任何更新它以使用正确运算符的方法
我对 MongoDB 了解不多,但似乎 mongodb-csharp 代码尚未更新为使用$geoWithin
,如您所见:
mongo-csharp-driver (QueryBuilder)
public static IMongoQuery WithinCircle(string name, double centerX, double centerY, double radius, bool spherical)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
var shape = spherical ? "$centerSphere" : "$center";
var condition = new BsonDocument("$within", new BsonDocument(shape, new BsonArray { new BsonArray { centerX, centerY }, radius }));
return new QueryDocument(name, condition);
}
看,它使用$within
。
由于该库是开源的,您可以分叉、编辑和重新编译它,并使用您自己的版本。 此外,您可以提出拉取请求,以提出要包含在主代码中的更改。
我认为没有“更简单”的方法可以做到,我希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.