分分片的集合不支持唯一索引,除非该索引是分片键或将其作为前缀。
关于此任务
索引上的唯一性约束可确保集合中的文档在字段上设立唯一值。对于分片的集合, MongoDB不会对字段实施唯一性约束,除非索引是分片键或其包含分片键作为前缀。要防止出现问题,请执行以下操作:
在分片的集合上,如果您创建不使用分片键的唯一索引, MongoDB则会向
createIndexes命令返回错误。如果您对集合分片,并且该集合包含不使用分片键的唯一索引,MongoDB将向
shardCollection命令返回错误。
步骤
2
3
将集合分片
sh.shardCollection( "accounts.names", { region_id: 1 } )
{ collectionsharded: 'accounts.names', ok: 1, '$clusterTime': { clusterTime: Timestamp( { t: 1759260515, i: 58 } ), signature: { hash: Binary.createFromBase64( 'AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0 ), keyId: Long( '0' ) } }, operationTime: Timestamp( { t: 1759260515, i: 57 } ) }