我的mongodb集合中有以下记录
/* 1 */
{
"_id" : ObjectId("58ecf141624bc0798ee5882d"),
"username" : "user.sthlm",
"location" : [
18.0686,
59.3293
]
}
/* 2 */
{
"_id" : ObjectId("58ecf141624bc0798ee5882e"),
"username" : "user.malmo",
"location" : [
13.0038,
55.605
]
}
/* 3 */
{
"_id" : ObjectId("58ecf141624bc0798ee5882f"),
"username" : "user.la",
"location" : [
-118.2437,
34.0522
]
}
“location”是“2dsphere”类型,它按顺序排列[经度,纬度]
现在我正在使用如下的pymongo查询来检索给定点之间的距离
(斯德哥尔摩协调员) 经度= 18.0686 纬度= 59.3293
for doc in self.users.aggregate([{"$geoNear": {"near": [longitude, latitude],
"distanceField":"distance",
"distanceMultiplier": 1.0,
"num": int(count),
"spherical": True}}]):
结果如下
{
"distance": 0,
"username": "user.sthlm"
},
{
"distance": 0.08048218816530191,
"username": "user.malmo"
},
{
"distance": 1.393869662777678,
"username": "user.la"
}
在查询回复中,斯德哥尔摩与洛杉矶之间的距离重新调整为1.393869662777678。我不太确定它在哪个单位。
从谷歌地图,坐标之间的距离是8,875公里或5,515英里,而1.3938不适合任何一项法案。从mongoDB文档中,我引用的结果不是以弧度形式返回的。所以我想知道从我的查询响应中引用什么。
由于
答案 0 :(得分:1)
以弧度为单位返回距离 。通过乘以6371将(非常近似)弧度转换为km。
6371 * 1.393 = 8874 km,如预期的那样。