我正在使用mongodb将gps位置数据存储为这个geojson文档
{“type”:“point”,“coordinates”:[33.313183,44.465632]}
{“type”:“point”,“coordinates”:[33.2926487,44.4159651]}
更新:我还确保了2dsphere索引如下
db.test.ensureIndex( { loc : "2dsphere" } )
我从谷歌地图上得到了坐标
如果我用这个命令搜索,我就不能把结果中的距离转换成公里
db.runCommand({geoNear: 'test', spherical: true, near: {type: "Point" , coordinates: [33.2926487, 44.4159651]}})
结果如下
"results" : [
{
"dis" : 0.0033427770982422957,
"obj" : {
"_id" : ObjectId("54a96f348fa05fcaed637a22"),
"loc" : {
"type" : "Point",
"coordinates" : [
33.2926487,
44.4159651
]
}
}
},
{
"dis" : 5764.7060911604085,
"obj" : {
"_id" : ObjectId("54a96f4c8fa05fcaed637a23"),
"loc" : {
"type" : "Point",
"coordinates" : [
33.313183,
44.465632
]
}
}
}
]
第一个结果应该是零,因为它与我想得到的距离source=destination坐标相同,但仍然有值。
第二个值我无法转换成公里,在谷歌距离计算器是约5.26公里。
最佳答案
这些距离以米为单位。换算成公里,除以1000。您可以让MongoDB使用distanceMultiplier
选项执行此操作:
db.runCommand({ "geoNear" : "test", "spherical" : true, "distanceMultiplier" : 0.001, "near" : { "type" : "Point" , "coordinates" : [33.2926487, 44.4159651] } })