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