在MongoDB中进行地理空间查询时,如何返回与目标点的距离?
for post in db.datasets.find({"loc":{"$near":[50,50]}}).limit(10):
我该如何计算文档和“50,50”这个点之间的距离呢?
1 个回答
1
使用“geoNear”命令会返回一个“dis”值,这个值是结果的一部分。将这个值乘以你选择的单位下的地球半径,就能算出这个结果和你最初位置之间的距离。
举个例子,假设“places”是你的数据集合的名字,而你最初的位置的经纬度是50, 50。
db.command( { geoNear : "places" , near : [50,50] } );
结果会以这样的格式返回:
[
{
"dis" : 0.3886630122897946,
"obj" : {
"_id" : ObjectId("4d9123026ccc7e2cf22925c4"),
"pos" : {
"lon" : -10,
"lat" : -20
}
}
}
]
将每个结果的“dis”值乘以6371,就能得到以公里为单位的距离,而乘以3959则能得到以英里为单位的距离。
更多的细节和例子可以在Mongo文档中找到。