分片集合需要支持分片键的索引。该索引可以是基于分片键的索引,也可以是复合索引(其中分片键是索引的前缀)。
如果集合为空,
sh.shardCollection()会在分片键上创建索引(如果此类索引尚不存在)。如果集合不为空,则必须先创建索引,然后才能使用
sh.shardCollection()。如果使用
sh.reshardCollection()对集合重新分片,则无需事先在新分片键上创建索引。重新分片操作会自动构建所需的索引。要学习;了解更多信息,请参阅对集合重新分片过程。
如果索引是唯一支持分片键的非隐藏索引,则无法将其删除或隐藏。
从 MongoDB 7.0.3、6.0.12 和 5.0.22 开始,您可以删除 哈希分片键的索引。如需有关详细信息,请参阅删除哈希分片键索引。
Unique Indexes
MongoDB可以对范围分片键索引实施唯一性约束。对分片键使用唯一索引可实施整个键组合的唯一性,而不是分片键的各个组件的唯一性。
对于范围分片集合,只有分片键上的索引、分片键为 前缀 的_id 复合索引 或默认 索引可以是 唯一 的。不能在哈希索引上指定唯一约束。
要了解适用于分片集合上唯一索引的限制、如何对分片键值实施唯一性,以及如何在非分片键的字段上保持唯一性,请参阅 在分片集群中保持唯一性。