定义 2d 索引的位置精度
在2 d索引中,位置精度由用于存储索引数据的 地理哈希(Geohash)值的大小(以位为单位)定义。 默认, 2 d 索引使用26位精度,大约相当于两英尺( 60厘米)。
位置精度会影响插入和读取操作的性能。
要更改默认精度,请在创建 2d 索引时指定 bits
值。 您可以指定 1 到 32 之间(含 1 和 32)的bits
值。
db.<collection>.createIndex( { <location field>: "2d" }, { bits: <bit precision> } )
关于此任务
位置精度影响查询性能:
较低的精度可提高插入和更新操作的性能,并使用更少的存储空间。
较高的精度可提高读取操作的性能,因为查询会扫描索引的较小部分以返回结果。
位置精度不影响查询准确性。 最终查询处理中始终会使用网格坐标。
开始之前
创建 contacts
集合:
db.contacts.insertMany( [ { name: "Evander Otylia", phone: "202-555-0193", address: [ 55.5, 42.3 ] }, { name: "Georgine Lestaw", phone: "714-555-0107", address: [ -74, 44.74 ] } ] )
address
字段包含传统坐标对。
步骤
在address
字段上创建 2d 索引。 指定32
位的位置精度:
db.contacts.createIndex( { address: "2d" }, { bits: 32 } )
后续步骤
您可以使用 2d 索引对位置数据执行计算,例如邻近查询。