シャーディングされたコレクションでは、インデックスがシャードキーであるか、それがプレフィックスとして含まれていない限り、サポートされません。
このタスクについて
インデックスに一意の制約を適用すると、コレクション内のドキュメントがフィールドに一意の値が設定されるようになります。シャーディングされたコレクションでは、インデックスがシャードキーであるか、プレフィックスとしてシャードキーが含まれていない限り、 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 } ) }