Docs 菜单
Docs 主页
/
数据库手册
/ / / / /

定义 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 索引对位置数据执行计算,例如邻近查询。

后退

创建

在此页面上