“文档” 菜单
文档首页
/
MongoDB Manual
/ /

地理空间索引

在此页面上

  • 用例
  • 开始体验
  • 详情
  • 分片集合
  • 覆盖查询
  • 球面查询
  • 了解详情

地理空间索引支持对存储为 GeoJSON对象或传统坐标对的数据进行查询。您可以使用地理空间索引来提高对地理空间数据的查询性能或运行某些地理空间查询。

MongoDB 提供两种类型的地理空间索引:

  • 2dsphere 索引,支持解释球体上的几何形状的查询。

  • 2d 索引,支持在平面上解释几何图形的查询。

要了解有关地理空间数据和查询操作的更多信息,请参阅地理空间查询。

如果应用程序经常查询包含地理空间数据的字段,则可以创建地理空间索引,提高查询性能。

某些查询操作需要地理空间索引。如果您要使用 $near$nearSphere 操作符或 $geoNear 聚合阶段进行查询,则必须创建地理空间索引。有关详细信息,请参阅地理空间查询操作符地理空间聚合阶段

例如,考虑一个 subway 集合,其中的文档包含 location 字段,该字段指定城市地铁站的坐标。您经常使用 $geoWithin 操作符运行查询,返回特定区域车站的列表。要提高此查询的性能,您可以在 location 字段上创建地理空间索引。创建索引后,您可以使用 $near 操作符进行查询,按由近到远的顺序返回附近车站的列表。

为经常查询的字段创建索引可增加涵盖这些查询的机会。已涵盖的查询是指可使用索引来完全满足的查询,而无需检查任何文档。此举可优化查询性能。

若要创建地理空间索引并运行地理空间查询,请参阅:

本部分介绍有关地理空间索引的详细信息。

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

您可以使用地理空间查询操作符聚合阶段,查询分片集合上的地理空间数据。

在 MongoDB 4.0 之前,分片集合不支持 $near$nearSphere 查询。相反,您可以使用 $geoNear 聚合阶段或 geoNear 命令。

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

使用 2d 索引查询球形数据可能会返回不正确的结果或错误。例如,2d 索引不支持环绕极点的球形查询。

不过,您可以将 2dsphere 索引用于球形查询二维查询。对于二维查询,2dsphere 索引将作为传统坐标对存储的数据转换为 GeoJSON 点类型。

有关地理空间查询操作示例,请参阅地理空间查询示例

← 通配符索引限制