分片集合不支持唯一索引,除非该索引是分片键或将其作为前缀。
关于此任务
索引上的唯一性约束可确保集合中的文档在字段上设立唯一值。对于分片集合,MongoDB不会对字段实施唯一性约束,除非索引是分片键或其包含分片键作为前缀。要防止出现问题,请执行以下操作:
对于分片的集合,如果您创建了不使用分片键的唯一索引,则当您运行
createIndexes命令时, MongoDB会返回错误。如果您对集合分片,并且该集合包含不使用分片键的唯一索引,则当您运行
shardCollection命令时, MongoDB会返回错误。
步骤
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 } ) }