我正在使用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] } })

09-26 08:31