2dsphere vs 2d index:哪个“更好”/更快?

时间:2014-01-10 21:12:52

标签: mongodb mongodb-indexes

Ι有一个数据库,我的文档只有Points。我考虑添加地理空间索引。所以我可以选择2dsphere2d

MongoDB.org有:

2dsphere索引支持:

 - Calculations on a sphere
 - Both GeoJSON objects and legacy coordinate pairs
 - A compound index with scalar index fields (i.e. ascending or
   descending) as a prefix or suffix of the 2dsphere index field

2d索引支持:

 - Calculations using flat geometry 
 - Legacy coordinate pairs (i.e.,    geospatial points on a flat
   coordinate system)  
 - A compound index with    only one additional    field, as a suffix of
   the 2d index field

然而,由于我的所有文档都是积分,因此我可以在我的架构中选择以下选项,但没有太大区别。

for 2dsphere:

location : { 
      type : "Point" ,
      coordinates : [10,45] 
}

或2d索引:

location : [10,45]

我的问题归结为哪一个更快?我真的不知道如何测量它。

这个问题假设我只想查询正方形box数据并且不关心复杂的多边形搜索:$box只有2d索引支持(如果我正确读取) )或两个索引支持的$polygon $geoWithi方法。

1 个答案:

答案 0 :(得分:3)

除了您已经完成的研究之外,我还希望在这两个索引之间添加另一个差异。

默认情况下,传统坐标对上的2d索引使用26位精度,使用默认范围-180到180大致相当于2英尺或60厘米的精度。精度是以位的大小来衡量的。用于存储位置数据的geohash值。您可以配置最多32位精度的地理空间索引。

  

db.<collection>.ensureIndex( {<location field> : "<index type>"} , { bits : <bit precision> } )

来源: MongoDB doc reference