MongoDB とドライバー
このページでは、mongosh メソッドについて説明します。MongoDBドライバーで同等のメソッドを確認するには、 プログラミング言語の対応するページを参照してください。
定義
- db.collection.dropIndexes()
- 指定された 1 つまたは複数のインデックス( - _idフィールドのインデックスと最後に残ったシャード キー インデックスを除く)をコレクションから削除します。- この方法を使用すると、次のことができます。 - コレクションから - _idインデックス以外を削除します。- db.collection.dropIndexes() 
- コレクションから指定したインデックスを削除します。 インデックスを指定するには、次のいずれかのメソッドを渡します。 - インデックス仕様ドキュメント(インデックスが テキストインデックスでない限り、インデックス名を使用して削除します): - db.collection.dropIndexes( { a: 1, b: 1 } ) 
- インデックス名 - db.collection.dropIndexes( "a_1_b_1" ) - Tip- インデックスの名前を取得するには、 - db.collection.getIndexes()メソッドを使用します。
 
- コレクションから指定したインデックスを削除します。 削除するインデックスを複数指定するには、 メソッドにインデックス名の配列を渡します。 - db.collection.dropIndexes( [ "a_1_b_1", "a_1", "a_1__id_-1" ] ) - インデックス名の配列に存在しないインデックスが含まれている場合、メソッドは指定されたインデックスを削除せずにエラーを出します。 - Tip- インデックスの名前を取得するには、 - db.collection.getIndexes()メソッドを使用します。
 - db.collection.dropIndexes()メソッドでは、次の任意パラメーターが使われます。Parameterタイプ説明- indexes- string またはドキュメントまたは string の配列 
動作
MongoDB 6.0以降、最後に残っているシャードキー互換インデックスを削除するために使用しようとすると、 db.collection.dropIndexes()によりエラーが発生します。 "*"をdb.collection.dropIndexes()に渡すと、 _idインデックスと最後に残っているシャードキー互換インデックス(存在する場合)を 除く すべてのインデックスが削除されます。
MongoDB 5.2以降では、別のインデックスでビルドが進行中の場合でも、 db.collection.dropIndexes()を使用して同じコレクションの既存のインデックスを削除できます。 以前のバージョンでは、インデックスのビルドが進行中に別のインデックスを削除しようとするとBackgroundOperationInProgressForNamespaceエラーが発生していました。
関連するクエリのみを強制終了します
dropIndexes()操作は、削除されるインデックスを使用しているクエリのみを強制終了します。 これには、クエリ プランの一部としてインデックスを考慮するクエリが含まれる場合があります。
リソースのロック
db.collection.dropIndexes()は、操作中、指定されたコレクションに対する排他ロックを取得します。 コレクションに対する後続のすべての操作は、 db.collection.dropIndexes()がロックを解放するまで待機する必要があります。
インデックス名
存在しないインデックスを含むインデックス名の配列がメソッドに渡された場合、指定されたインデックスはいずれも削除せずにエラーになります。
_id Index
_idフィールドのデフォルト インデックスを削除することはできません。
text Indexes
テキストインデックスを削除するには、インデックス仕様ドキュメントの代わりにインデックス名を指定します。
進行中のインデックスビルドの停止
db.collection.dropIndexes()に指定されたインデックスがまだビルド中の場合、 db.collection.dropIndexes()は進行中のビルドを停止しようとします。 インデックスのビルドを停止すると、ビルドされたインデックスを削除するのと同じ効果があります。
レプリカセットの場合は、 プライマリ でdb.collection.dropIndexes() を実行します。プライマリはインデックスのビルドを停止し、関連する "abortIndexBuild" oplogエントリを作成します。 "abortIndexBuild" oplog エントリを複製するセカンダリは、進行中のインデックスビルドを停止し、ビルドジョブを破棄します。 インデックス構築プロセスの詳細なドキュメントについては、「 インデックス構築プロセス 」を参照してください。
currentOp操作またはcreateIndexesdb.collection.createIndexes() 操作に関連付けられたインデックスビルドを識別するには、 を使用します。例については、「アクティブなインデックス操作」を参照してください。
Hidden Indexes
MongoDB では、クエリ プランナーからインデックスを非表示または再表示する機能が提供されます。 プランナーからインデックスを非表示にすることで、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。
評価後にユーザーがインデックスを削除する場合は、非表示のインデックスを削除できます。つまり、削除するために最初に再表示する必要はありません。
ただし、影響が負の場合、ユーザーは削除されたインデックスを再度作成する必要がある代わりに、インデックスを再表示できます。 また、インデックスは非表示になっている間完全に維持されているため、非表示が解除されたらすぐに使用できるようになります。
非表示インデックスの詳細については、「 非表示のインデックス 」を参照してください。