シャーディングされたコレクションには、シャードキーをサポートするインデックスが必要です。インデックスは、シャードキー上のインデックス、またはシャードキーがインデックスの 複合インデックス である プレフィックス にすることができます。
コレクションが空の場合、
sh.shardCollection()は、インデックスがまだ存在しない場合にはシャードキーにインデックスを作成します。コレクションが空でない場合、
sh.shardCollection()を使用する前に、まずインデックスを作成する必要があります。sh.reshardCollection()を使用してコレクションを再シャーディングする場合、事前に新しいシャードキーにインデックスを作成する必要はありません。リシャーディング操作、必要なインデックスが自動的に構築されます。詳細については、「コレクションの再シャーディング」手順を参照してください。
シャードキーをサポートする唯一の非表示ではないインデックスである場合は、インデックスを削除または非表示にすることはできません。
MongoDB 7.0.3以降では (6.0.12、5.0.22でも利用可能) ハッシュされたシャードキーのインデックスを削除できます。詳細については、「ハッシュされたシャードキーインデックスの削除」をご覧ください。
Unique Indexes
MongoDBは、範囲シャードキーインデックスに一意の制約を強制することができます。シャードキーでユニークインデックスを使用すると、シャードキーの個々のコンポーネントではなく、キーの組み合わせ全体に一意性が強制されます。
範囲ベースのシャーディングされたコレクションの場合、シャードキー上のインデックスのみ 、シャードキーがプレフィックスである複合インデックス、またはデフォルトの_id インデックスは一意である可能性があります。ハッシュされたインデックスに一意の制約を指定することはできません。
シャーディングされたコレクションの一意のインデックスに適用される制限、シャードキー値に一意性を強制する方法、およびシャードキーではないフィールドに一意性を維持する方法については、「 シャーディングされたクラスターの一意性の維持 」を参照してください。