Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

地理空间索引限制

在此页面上

  • 排序规则选项
  • 覆盖查询
  • 片键
  • 多个地理空间索引 $geoNear
  • 支持的数据类型
  • 索引键数量
  • 在平面上进行精确匹配
  • 了解详情

2d2dsphere 索引是地理空间索引。地理空间索引有以下限制:

2d 索引不支持排序规则选项,仅支持二进制比较。二进制比较是通过比较每个字符串中每个字符的 Unicode 数值进行的,不考虑字母大小写或重音符号。

要在具有非简单排序规则的collection上创建 2d 索引,您必须在创建索引时显式指定 { collation: { locale: "simple" } }

例如,考虑一个名为 collationTest 的集合,其排序规则为 { locale: "en" }

db.createCollection(
"collationTest",
{
collation: { locale: "en" }
}
)

要在collationTest集合上创建 2d 索引,您必须指定{ collation: { locale: "simple" } } 。 此命令在loc字段上创建 2d 索引:

db.collationTest.createIndex(
{
loc: "2d"
},
{
collation: { locale: "simple" }
}
)

地理空间索引无法涵盖查询

不能将地理空间索引用作分片键。但是,您可以通过使用不同字段作为分片键在分片集合上创建地理空间索引。

如果集合具有多个地理空间索引,则在运行 $geoNear 管道阶段时,必须指定 $geoNear key 选项。key 选项指定使用哪个索引来支持查询。

使用 2dsphere 索引建立索引的字段必须包含几何数据。几何数据可以是:

您无法:

  • 将包含非几何数据的文档插入使用2 dsphere 索引进行索引的字段中。

  • 在包含非几何数据的字段上构建 2dsphere 索引。

创建 2dsphere 索引时,mongod 会将 GeoJSON 形状映射到内部表示。生成的内部表示可能是很大的值数组。

indexMaxNumGeneratedKeysPerDocument 设置限制为单个文档生成的最大键数,防止出现内存不足错误。如果操作需要的键数多于 indexMaxNumGeneratedKeysPerDocument 参数指定的键数,则操作将失败。

默认情况下,服务器允许每个文档最多有 100,000 个索引键。要允许更多索引键,请提高 indexMaxNumGeneratedKeysPerDocument 值。

2d 索引无法提高坐标对精确匹配的性能。

例如,考虑包含以下文档的 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 字段上的 2d 索引不会提高以下查询的性能:

db.contacts.find( { address: [ 55.5, 42.3 ] } )

若要提高此查询的性能,请在 address 字段上创建升序或降序索引:

db.contacts.createIndex( { address: 1 } )

后退

计算为弧度

来年

哈希