哪个坐标使用与谷歌地图坐标的mongodb地理查询?

时间:2013-10-16 19:44:41

标签: mongodb

我存储在mongoDB坐标simillar到谷歌地图坐标 - 例如20.2345,34.2034。我需要的是在一些搜索范围内(以米为单位)获取所有文档。但我很困惑,如果我应该使用2dsphere索引和$nearSphere查询或2d索引和$near查询???


好的,我检查了它并使用2d索引$near$nearSphere查询返回奇怪的结果。使用2dsphere索引使用$near$nearSphere查询返回了正确的结果。我检查了2个点,它们之间的距离= ~3800m。然后我正在寻找一个阈值半径,它将包括第二个点(假设从第一个点看的位置)。结果如下:

  1. 指数:'2d',$ near - > radius = ~57
  2. index:'2d',$ nearSphere - > radius = 0.99
  3. index:'2dsphere',$ near - > radius = ~3850
  4. index:'2dsphere',$ nearSphere - > radius = ~3850
  5. 我不知道2d索引是怎么回事 - 我总是使用$geometry: { type: 'Point' ...总是使用米而不是弧度......

    任何方式只需使用2dsphere索引就可以了。我也不得不放弃收集来重新索引从'2d'到'2dsphere'(db.collection.reIndex()没有工作)

1 个答案:

答案 0 :(得分:1)

为了更准确地反映地球是一个球体,您需要2dsphere索引,如下所述:http://docs.mongodb.org/manual/applications/geospatial-indexes/

我不完全确定$near索引上$nearSphere2dsphere之间的区别,但我得到的印象是其中任何一个都可行。看起来$nearSphere允许您指定以弧度表示的距离,而不仅仅是米。