优化集合的分片键可以实现更细粒度的数据分布,并可解决现有键由于关联基数不足而导致巨型数据块的问题。
警告
请勿修改任何当前分片键字段的范围或哈希类型。这会导致数据不一致。例如,请勿将分片密钥从 { customer_id: 1 } 修改为 { customer_id: "hashed", order_id: 1 }。
若要优化集合的分片键,请使用 refineCollectionShardKey 命令。refineCollectionShardKey 会向现有键添加一个或多个后缀字段以创建新的分片键。
例如,您可能在 test 数据库中有一个现有的 orders 集合,其分片键为 { customer_id: 1 }。您可以使用 refineCollectionShardKey 命令将分片键更改为新的分片键 { customer_id: 1, order_id: 1 }:
db.adminCommand( { refineCollectionShardKey: "test.orders", key: { customer_id: 1, order_id: 1 } } )