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()メソッドを使用します。
パラメーター
The db.collection.dropIndexes() method takes the following optional parameter:
Parameter | タイプ | 説明 |
|---|---|---|
| string またはドキュメントまたは string の配列 |
動作
MongoDB6.0 db.collection.dropIndexes()以降では、それを使用して最後に残っているシャードキー互換インデックスを削除しようとすると、 によりエラーが発生します。 を"*" db.collection.dropIndexes()に渡すと、_id インデックスと最後に残っているシャードキー互換インデックス(存在する場合)を 除く すべてのインデックスが削除されます。
MongoDB5.2 以降では、別のインデックスでビルドが進行中の場合でも、db.collection.dropIndexes() を使用して同じコレクションの既存のインデックスを削除できます。以前のバージョンでは、インデックスのインデックス構築が進行中に別のインデックスを削除しようとするとBackgroundOperationInProgressForNamespace エラーが発生していました。
関連するクエリのみを強制終了します
The dropIndexes() operation only kills queries that are using the index being dropped. This may include queries considering the index as part of query planning.
リソースのロック
db.collection.dropIndexes() obtains an exclusive lock on the specified collection for the duration of the operation. All subsequent operations on the collection must wait until db.collection.dropIndexes() releases the lock.
インデックス名
存在しないインデックスを含むインデックス名の配列がメソッドに渡された場合、指定されたインデックスはいずれも削除せずにエラーになります。
_id Index
_idフィールドのデフォルト インデックスを削除することはできません。
text Indexes
テキストインデックスを削除するには、インデックス仕様ドキュメントの代わりにインデックス名を指定します。
進行中のインデックスビルドの停止
If an index specified to db.collection.dropIndexes() is still building, db.collection.dropIndexes() attempts to stop the in-progress build. Stopping an index build has the same effect as dropping the built index.
For replica sets, run db.collection.dropIndexes() on the primary. The primary stops the index build and creates an associated "abortIndexBuild" oplog entry. Secondaries which replicate the "abortIndexBuild" oplog entry stop the in-progress index build and discard the build job. See Index Build Process for detailed documentation on the index build process.
currentOp操作またはcreateIndexesdb.collection.createIndexes() 操作に関連付けられたインデックスビルドを識別するには、 を使用します。例については、「アクティブなインデックス操作」を参照してください。
Hidden Indexes
MongoDB では、クエリ プランナーからインデックスを非表示または再表示する機能が提供されます。 プランナーからインデックスを非表示にすることで、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。
評価後にユーザーがインデックスを削除する場合は、非表示のインデックスを削除できます。つまり、削除するために最初に再表示する必要はありません。
ただし、影響が負の場合、ユーザーは削除されたインデックスを再度作成する必要がある代わりに、インデックスを再表示できます。 また、インデックスは非表示になっている間完全に維持されているため、非表示が解除されたらすぐに使用できるようになります。
非表示インデックスの詳細については、「 非表示のインデックス 」を参照してください。