Docs 菜单
Docs 主页
/
MongoDB Manual
/

2d 索引

在此页面上

  • Considerations
  • 行为
  • sparse 属性
  • 排序规则选项

对在二维平面上存储为点的数据使用2d索引。 2d索引用于legacy coordinate pairs MongoDB2.2及更早版本中使用的 。

在以下情况下使用2d索引:

  • 您的数据库具有 MongoDB 2.2 或更早版本的旧版坐标对并且

  • 您不打算将任何位置数据存储为GeoJSON对象。

有关地理空间查询的更多信息,请参阅地理空间查询。

您可以为$geoNear管道阶段指定key选项,以指示要使用的索引字段路径(Field Path)。 $geoNear这样就允许在具有多个2d 索引和/或多个2 dsphere索引 的集合上使用 阶段:

  • 如果您的collection具有多个2d索引和/或多个2dsphere 索引,则必须使用key选项来指定要使用的带索引字段路径(Field Path)。

  • 如果不指定key ,则不能有多个2d索引和/或多个2dsphere 索引,因为如果没有key ,多个2d索引或2dsphere索引之间的索引选择将不明确。

注意

如果未指定key ,并且您最多只有一个2d索引和/或只有一个2dsphere 索引,MongoDB 首先会查找要使用的2d索引。 如果2d索引不存在,则 MongoDB 会查找要使用的2dsphere索引。

如果位置数据包含 GeoJSON 对象,请勿使用2d索引。 要同时对旧版坐标对GeoJSON 对象建立索引,请使用2dsphere索引。

对collection进行分片时,不能使用2d索引作为分片。但是,您可以使用其他field作为分片键,在分片collection上创建地理空间索引。

2d索引支持在平坦的欧几里得平面上进行计算。 2d索引还支持球体上的仅距离计算(即 $nearSphere ),但用于球体上的几何计算(例如 $geoWithin ),将数据存储为GeoJSON 对象并使用2dsphere索引。

一个2d索引可以引用两个字段。第一个必须是位置字段。2d复合索引构造的查询首先选择位置字段,然后按附加条件筛选结果。复合2d索引可以覆盖查询。

2d 索引始终是稀疏的,并忽略稀疏选项。 如果文档缺少2d索引字段(或者该字段为null或空数组),MongoDB 不会将该文档的条目添加到2d索引。 对于插入,MongoDB 会插入文档,但不会添加到2d索引。

对于包含2d索引键和其他类型键的复合索引,只有2d索引字段决定索引是否引用文档。

2d 索引仅支持简单的二进制比较,不支持排序规则选项。

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

后退

查询 2dsphere 索引