0

maxDistance方法参数的单位类型是什么Query<U>.Near<T>(在 MongoDB C# 驱动程序中)?

注意:我创建了一个索引,并检查了它是一个“2d”索引:

var keys = IndexKeys<Loc>.GeoSpatial<double[]>(l => l.Coordinates);
var options = IndexOptions.SetName("Loc_Coordinates").SetBackground(true);
Locations.EnsureIndex(keys, options);

并通过以下方式检查索引:

var idxes = Locations.GetIndexes();
foreach (var i in idxes)
{
    Program.Log(i.Key);
}

索引是:

{ "_id" : 1 }
{ "Coordinates" : "2d" }

我认为单位应该是弧度,所以我写了这个帮助方法来将米转换为弧度:

const double EarthRadius_m = 6371.01 * 1000d; //m
public static double MeterToRadian(this double meter) { return meter / EarthRadius_m; }

但是如果我使用米(在密集区域),我会得到太多的结果,如果我使用弧度,除非它很大(乘以 1000!),否则我什么也得不到。也许MeterToRadian有一些问题?或者单位是km不是m?(但在网站上,它说是米)。

我通过以下代码查询集合:

var radius = meter.MeterToRadian();
var query = Query<Loc>.Near<double[]>(l => l.Coordinates, lon, lat, radius);
var answer = Locations.Find(query).SetLimit(limit).ToList();
4

0 回答 0