【发布时间】:2013-11-03 11:20:57
【问题描述】:
我正在尝试在我的 MongoDB 数据库上构建空间查询(以便使用 geoNear 查找所有结果。
它有效,只是计算的距离根本不准确。所以,这就是我所拥有的:
> db.status.find()
{
"_id":NumberLong(5),
"location":{
"latitude":48.8947767,
"longitudes":2.103352099999997
}
}
我有一个索引:
> db.status.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "aroundb.status",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"location" : "2dsphere"
},
"ns" : "aroundb.status",
"name" : "location_2dsphere"
}
]
这是我的查询:
db.runCommand({ geoNear:"status",near: [ 48.8947767, 2.093352099999997], spherical:true, distanceMultiplier:6371} )
结果是:
{
"ns" : "aroundb.status",
"results" : [
{
"dis" : 1.1119514223177513,
"obj" : {
"_id" : NumberLong(5),
"location" : {
"latitude" : 48.8947767,
"longitudes" : 2.103352099999997
}
}
}
],
"stats" : {
"time" : 14,
"nscanned" : 1,
"avgDistance" : 1.1119514223177513,
"maxDistance" : 1.1119514223177513
},
"ok" : 1
}
如您所见,计算出的距离(乘以地球半径以公里为单位)为 1.1119514223177513 公里。
如果我在http://www.lexilogos.com/calcul_distances.htm 网站上计算距离,则计算出的距离为 0.7312508492264875 公里。
使用Google Maps,距离也是0.7312508492264875公里。
所以,问题是:我做错了什么?
【问题讨论】:
-
查看我对类似问题的回答:stackoverflow.com/questions/19496883/…
标签: mongodb grails geolocation gmongo