0

我在 mongoDB 坐标中存储类似于谷歌地图坐标 - 例如 20.2345,34.2034。我需要的是在某个搜索半径(以米为单位)内获取所有文档。但是我很困惑我应该使用2dsphere索引和$nearSphere查询还是2d索引和$near查询???


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

  1. 索引:'2d',$near -> 半径 = ~57
  2. 索引:'2d',$nearSphere -> 半径 = 0.99
  3. 索引:'2dsphere',$near -> 半径 = ~3850
  4. 索引:'2dsphere',$nearSphere -> 半径 = ~3850

2d我不知道索引是怎么回事- 我总是$geometry: { type: 'Point' ...使用米而不是弧度......

任何方式只需使用2dsphere索引就可以了。我还不得不将集合从“2d”重新索引到“2dsphere”(db.collection.reIndex() 不起作用)

4

1 回答 1

1

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

我不完全确定索引之间的区别,但$near我得到的印象是两者都可以。它看起来允许您以弧度指定距离,而不仅仅是米。$nearSphere2dsphere$nearSphere

于 2013-10-16T19:59:00.467 回答