创建二维索引

在本页面

要构建地理空间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 返回错误。

Important

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

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

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

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

为 2d 索引定义位置精度

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

索引精度不影响查询精度。实际的网格坐标始终用于最终查询处理中。降低精度的优点是插入操作的处理开销较低,并且占用的空间更少。较高精度的优点是查询扫描索引的较小部分以返回结果。

要配置默认位置以外的位置精度,请在创建索引时使用bits选项。使用以下语法:

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

有关 geohash 值的内部信息,请参阅二维索引的 Geohash 值的计算