对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

定义 2d 索引的位置精度

在 2d 索引中,位置精度由用于存储索引数据的地理哈希(Geohash)值的大小(以位为单位)定义。默认情况下,2d 索引使用 26 位精度,大约相当于两英尺(60 厘米)。

位置精度会影响插入和读取操作的性能。

要更改默认精度,请在创建 2d 索引时指定bits值。 您可以指定 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 索引对位置数据执行计算,例如邻近查询。