Docs 菜单

Docs 主页开发应用程序MongoDB Manual

创建 2d索引

在此页面上

  • 2d索引定义位置范围
  • 定义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索引采用经度和纬度,边界为 -180()和 180 (非包含)。 如果文档包含指定范围之外的坐标数据,MongoDB 将返回错误。

重要

默认边界允许应用程序插入无效纬度大于 90 或小于 -90 的文档。 未定义使用此类无效点的地理空间查询的行为。

2d索引上,您可以更改位置范围。

您可以使用默认值以外的位置范围构建2d地理空间索引。 创建索引时使用minmax选项。 使用以下语法:

db.collection.createIndex( { <location field> : "2d" } ,
{ min : <lower bound> , max : <upper bound> } )

默认情况下,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)值。

← 2d 索引