我在 mongoDB 坐标中存储类似于谷歌地图坐标 - 例如 20.2345,34.2034。我需要的是在某个搜索半径(以米为单位)内获取所有文档。但是我很困惑我应该使用2dsphere
索引和$nearSphere
查询还是2d
索引和$near
查询???
好的,我检查了它并同时使用2d
索引$near
和$nearSphere
查询返回奇怪的结果。使用2dsphere
索引返回正确的结果同时使用$near
和$nearSphere
查询。我检查了 2 个点,它们之间的距离 = ~3800m。然后我正在寻找一个包含第二个点的阈值半径(假设从第一个点看哪里)。以下是结果:
- 索引:'2d',$near -> 半径 = ~57
- 索引:'2d',$nearSphere -> 半径 = 0.99
- 索引:'2dsphere',$near -> 半径 = ~3850
- 索引:'2dsphere',$nearSphere -> 半径 = ~3850
2d
我不知道索引是怎么回事- 我总是$geometry: { type: 'Point' ...
使用米而不是弧度......
任何方式只需使用2dsphere
索引就可以了。我还不得不将集合从“2d”重新索引到“2dsphere”(db.collection.reIndex() 不起作用)