我已经设置了一个可以很好地运行的地理空间查询,但是我希望得到每个结果的距离。
鉴于查询:
var query = Query.Near("Location", longitude, latitude);
var places = mongoDb.GetCollection<Place>("places").Find(near);
如何从“地点”中检索每个元素的距离?
答案 0 :(得分:3)
我不知道你是否可以与mongo保持距离,但我过去所做的只是使用Haversine公式来获取数据后的距离。
您可以找到我使用的实现 here
编辑:抱歉,您可以从Mongo返回距离,但不能使用Query.Near()。您需要使用集合上的GeoNear函数。
mongoDb.GetCollection<Place>("places").GeoNear(Query.Null, latitude, longitude, maxDistance);
这将返回一个GeoNearResult<Place>
,它将包含一个Hits属性,IEnumurable<Hit>
将包含一个Distance属性和一个包含您的位置对象的文档属性。