我存储在mongoDB坐标simillar到谷歌地图坐标 - 例如20.2345,34.2034。我需要的是在一些搜索范围内(以米为单位)获取所有文档。但我很困惑,如果我应该使用2dsphere
索引和$nearSphere
查询或2d
索引和$near
查询???
好的,我检查了它并使用2d
索引$near
和$nearSphere
查询返回奇怪的结果。使用2dsphere
索引使用$near
和$nearSphere
查询返回了正确的结果。我检查了2个点,它们之间的距离= ~3800m。然后我正在寻找一个阈值半径,它将包括第二个点(假设从第一个点看的位置)。结果如下:
我不知道2d
索引是怎么回事 - 我总是使用$geometry: { type: 'Point' ...
总是使用米而不是弧度......
任何方式只需使用2dsphere
索引就可以了。我也不得不放弃收集来重新索引从'2d'到'2dsphere'(db.collection.reIndex()没有工作)
答案 0 :(得分:1)
为了更准确地反映地球是一个球体,您需要2dsphere
索引,如下所述:http://docs.mongodb.org/manual/applications/geospatial-indexes/
我不完全确定$near
索引上$nearSphere
和2dsphere
之间的区别,但我得到的印象是其中任何一个都可行。看起来$nearSphere
允许您指定以弧度表示的距离,而不仅仅是米。