如何使用C#驱动程序和GeoNear方法向MongoDB查询附近的地理位置?

以下返回的距离值不正确的点:

var results = myCollection.GeoNear(
    Query.GT("ExpiresOn", now), // only recent values
    latitude,
    longitude,
    20
);

我怀疑我应该告诉Mongo在double [] Location字段上进行查询,但是我不知道查询语法。

最佳答案

通过thisthis找到了答案:

var earthRadius = 6378.0; // km
var rangeInKm = 3000.0; // km

myCollection.EnsureIndex(IndexKeys.GeoSpatial("Location"));

var near =
    Query.GT("ExpiresOn", now);

var options = GeoNearOptions
    .SetMaxDistance(rangeInKm / earthRadius /* to radians */)
    .SetSpherical(true);

var results = myCollection.GeoNear(
    near,
    request.Longitude, // note the order
    request.Latitude,  // [lng, lat]
    200,
    options
);

关于c# - MongoDb C#GeoNear查询构造,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7995097/

10-11 16:57