Ι有一个数据库,我的文档只有Points
。我考虑添加地理空间索引。所以我可以选择2dsphere和2d。
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方法。
答案 0 :(得分:3)
除了您已经完成的研究之外,我还希望在这两个索引之间添加另一个差异。
默认情况下,传统坐标对上的2d索引使用26位精度,使用默认范围-180到180大致相当于2英尺或60厘米的精度。精度是以位的大小来衡量的。用于存储位置数据的geohash值。您可以配置最多32位精度的地理空间索引。
db.<collection>.ensureIndex( {<location field> : "<index type>"} , { bits : <bit precision> } )