创建2d
索引
要构建地理空间2d
索引,请使用 db.collection.createIndex()
方法并指定2d
。 使用以下语法:
db.<collection>.createIndex( { <location field> : "2d" , <additional field> : <value> } , { <index-specification options> } )
2d
索引使用以下可选的索引规范选项:
{ min : <lower bound> , max : <upper bound> , bits : <bit precision> }
为 索引定义位置范围2d
默认情况下, 2d
索引采用经度和纬度,边界为 -180(含)和 180 (非包含)。 如果文档包含指定范围之外的坐标数据,MongoDB 将返回错误。
重要
默认边界允许应用程序插入无效纬度大于 90 或小于 -90 的文档。 未定义使用此类无效点的地理空间查询的行为。
在2d
索引上,您可以更改位置范围。
您可以使用默认值以外的位置范围构建2d
地理空间索引。 创建索引时使用min
和max
选项。 使用以下语法:
db.collection.createIndex( { <location field> : "2d" } , { min : <lower bound> , max : <upper bound> } )
定义 索引的位置精度2d
默认情况下,legacy coordinate pairs上的2d
索引使用 26 位精度,这大致相当于使用默认范围 -180 到 180 的 2 英尺或 60 厘米精度。精度是通过用于存储位置数据的地理哈希(Geohash)值的大小(以位为单位)来衡量的。您可以配置精度高达 32 位的地理空间索引。
索引精度不会影响查询准确性。 在最终查询处理中始终使用实际的网格坐标。 较低精度的优点是插入操作的开销较低,并且使用的空间较少。精度较高的一个优点是,查询会扫描索引的较小部分以返回结果。
要配置默认值以外的位置精度,请在创建索引时使用bits
选项。 使用以下语法:
db.<collection>.createIndex( {<location field> : "<index type>"} , { bits : <bit precision> } )
有关地理哈希(Geohash)值的内部信息,请参阅计算2d
索引的地理哈希(Geohash)值。