0

目前在一个项目中,我正在使用查询来查找 x 英里范围内的集合中的所有内容。阅读 mongodb 文档,它指出 $within 运算符已被弃用,您应该使用 $geoWithin 查询运算符。

我正在使用 Mongodb 查询生成器(见下文)

Query<Stuff>.WithinCircle(x => x.LongLat, longitude, latitude, radians, true)

我注意到它创建的查询使用 $within 运算符而不是 $geoWithin 运算符。由于我们已升级到 Mongodb 2.4.x,我没有看到任何更新它以使用正确的运算符的方法

4

1 回答 1

1

我对 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.

由于该库是开源的,因此您可以分叉、编辑和重新编译它,并使用您自己的版本。此外,您可以提出拉取请求以提议您的更改包含在主代码中。

我认为没有“更简单”的方法可以做到这一点,我希望这会有所帮助。

于 2013-06-19T19:05:20.373 回答