繁体   English   中英

在 C# 中使用 $geoWithin 运算符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM