创建二维索引
在本页面
要构建地理空间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
地理空间索引。创建索引时,请使用min
和max
选项。使用以下语法:
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 值的计算。