MongoDB とドライバー
定義
db.collection.dropIndex(index)コレクションから指定されたインデックスを削除または排除します。
注意
_idフィールドのデフォルト インデックスを削除することはできません。db.collection.dropIndex("*")を指定して_id以外のインデックスをすべて削除することはできません。代わりにdb.collection.dropIndexes()を使用してください。
メソッドのインデックス名またはインデックス仕様ドキュメントを取得するには、
db.collection.dropIndex()db.collection.getIndexes()メソッドを使用します。
パラメーター
db.collection.dropIndex()メソッドでは、次のパラメーターが使われます。
Parameter | タイプ | 説明 |
|---|---|---|
| 文字列またはドキュメント | 必須。削除するインデックスを指定します。インデックスは、インデックス名またはインデックス仕様ドキュメントによって指定できます。 テキスト インデックスを削除するには、インデックス名を指定します。
|
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
動作
MongoDB5.2 以降では、別のインデックスでビルドが進行中の場合でも、db.collection.dropIndex() を使用して同じコレクションの既存のインデックスを削除できます。以前のバージョンでは、インデックスのインデックス構築が進行中に別のインデックスを削除しようとするとBackgroundOperationInProgressForNamespace エラーが発生していました。
リソースのロック
db.collection.dropIndex()は、操作中に指定されたコレクションに対する排他ロックを取得します。コレクションに対する後続のすべての操作は、db.collection.dropIndex() がロックを解放するまで待機する必要があります。
進行中のインデックスビルドの停止
db.collection.dropIndex()に指定されたインデックスがまだビルド中の場合、 は進行中のビルドを停止しようとします。インデックス構築を停止すると、ビルドされたインデックスをdb.collection.dropIndex() 削除するのと同じ効果があります。
レプリカセットの場合は、プライマリでdb.collection.dropIndex() を実行します。プライマリはインデックス構築を停止し、関連する "abortIndexBuild" を作成しますoplogエントリ。"abortIndexBuild" を複製するセカンダリoplog のエントリがあると、進行中のインデックス構築が停止し、ビルドジョブが破棄されます。インデックス構築プロセスの詳細なドキュメントについては、「インデックス構築プロセス 」を参照してください。
currentOp操作またはcreateIndexesdb.collection.createIndexes() 操作に関連付けられたインデックスビルドを識別するには、 を使用します。例については、「アクティブなインデックス操作」を参照してください。
Hidden Indexes
MongoDB では、クエリ プランナーからインデックスを非表示または再表示する機能が提供されます。 プランナーからインデックスを非表示にすることで、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。
評価後にユーザーがインデックスを削除する場合は、非表示のインデックスを削除できます。つまり、削除するために最初に再表示する必要はありません。
ただし、影響が負の場合、ユーザーは削除されたインデックスを再度作成する必要がある代わりに、インデックスを再表示できます。 また、インデックスは非表示になっている間完全に維持されているため、非表示が解除されたらすぐに使用できるようになります。
非表示インデックスの詳細については、「 非表示のインデックス 」を参照してください。
例
petsコレクションで、catフィールドに降順のインデックスを作成します。
db.pets.createIndex( { cat: -1 }, { name: "catIdx" } )
petsコレクションのインデックスを表示するには、 getIndexes() メソッドを実行します。
db.pets.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { cat: -1 }, name: 'catIdx' } ]
フィールドcat の単一フィールドインデックスには、ユーザー指定の名前の catIdx とインデックス仕様ドキュメントの { "cat" : -1 } があります。
インデックス catIdx を削除するには、次のいずれかのインデックス名を使用できます。
db.pets.dropIndex( "catIdx" )
または、インデックス仕様ドキュメント { "cat" : -1 } を使用できます。
db.pets.dropIndex( { "cat" : -1 } )
dropIndex コマンドは、コマンドが実行される前にコレクション内のインデックスの数を返し、コマンドが成功したかどうかを示します。
{ nIndexesWas: 2, ok: 1 }
インデックスが削除されたことを確認するには、getIndexes() メソッドを再度実行します。
db.pets.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' } ]