细化集合的分片分片键可实现更细粒度的数据分布,并可解决现有键因关联 关联基数 不足而导致 个 巨型 数据段的情况。
警告
请勿修改任何当前分片键字段的范围或哈希类型。它会导致数据不一致。 例如,请勿将分片键从 { 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 } } )