db.collection.dropIndex()
定義
db.collection.dropIndex(index)
MongoDB とドライバー
このページでは
mongosh
メソッドがドキュメントされています。 MongoDB ドライバーで同等のメソッドを確認するには、プログラミング言語の対応するページを参照してください。コレクションから指定されたインデックスを削除または排除します。
注意
_id
フィールドのデフォルト インデックスを削除することはできません。db.collection.dropIndex("*")
を指定して_id
以外のインデックスをすべて削除することはできません。 代わりにdb.collection.dropIndexes()
を使用してください。
db.collection.dropIndex()
メソッドのインデックス名またはインデックス仕様ドキュメントを取得するには、db.collection.getIndexes()
メソッドを使用します。db.collection.dropIndex()
メソッドでは、次のパラメーターが使われます。Parameterタイプ説明index
文字列またはドキュメント
任意。削除するインデックスを指定します。インデックスは、インデックス名またはインデックス仕様ドキュメントによって指定できます。
テキスト インデックスを削除するには、インデックス名を指定します。
"*"
を指定して_id
以外のインデックスをすべて削除することはできません。 代わりにdb.collection.dropIndexes()
を使用してください。If an インデックス specified to is
db.collection.dropIndex()
still building, attempts to stop the in-progress build. Stopping an インデックス構築db.collection.dropIndex()
has the same effect as dropping the built インデックス.詳細なドキュメントについては、「 進行中のインデックスビルドの中止 」を参照してください。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
動作
dropIndex()
操作は、削除されるインデックスを使用しているクエリのみを強制終了します。 これには、クエリ プランの一部としてインデックスを考慮するクエリが含まれる場合があります。
リソースのロック
db.collection.dropIndex()
は、操作中、指定されたコレクションに対する排他ロックを取得します。 コレクションに対する後続のすべての操作は、 db.collection.dropIndex()
がロックを解放するまで待機する必要があります。
進行中のインデックスビルドの中止
バージョン 4.4 で追加: db.collection.dropIndex()
に指定されたインデックスがまだビルド中の場合、 dropIndex()
はビルドを中止しようとします。 インデックスのビルドを中止すると、ビルドされたインデックスを削除するのと同じ効果があります。 MongoDB 4.4 より前では、指定されたインデックスがまだ作成中であれば、 dropIndex()
はエラーを返しました。
dropIndex()
に指定されたインデックスは、インデックス ビルダに関連付けられた唯一のインデックスである必要があります。つまり、単一のcreateIndexes
またはdb.collection.createIndexes()
操作によってビルドされたインデックスです。 関連するインデックス ビルダに他の進行中のビルドがある場合は、ビルドが完了するまで待ち、インデックスをdropIndex()
に指定します。
たとえば、 createIndexes
/ createIndexes()
操作では 3 つのインデックスが作成されます。 3 つのインデックスビルドがすべて進行中の場合、 dropIndex()
はいずれのインデックスビルドも正常に中止できないため、それらのインデックスのいずれも削除できません。
currentOp
/createIndexes
createIndexes()
操作に関連付けられたインデックスビルドを識別するには、 を使用します。例については、「アクティブなインデックス操作」を参照してください。
レプリカセットまたはシャード レプリカセットの場合、プライマリでインデックスを中止しても、セカンダリ インデックスの構築は同時には中止されません。 dropIndex()
は、プライマリ上の指定されたインデックスの進行中のビルドを中止しようとし、成功した場合は関連する「中止」の oplog エントリを作成します。 進行中のビルドが複製されたセカンダリノードは、インデックス ビルドをコミットまたは中止する前に、プライマリからのコミットまたは中止の oplog エントリを待ちます。
Hidden Indexes
MongoDB では、クエリ プランナーからインデックスを非表示または再表示する機能が提供されます。 プランナーからインデックスを非表示にすることで、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。
評価後にユーザーがインデックスを削除する場合は、非表示のインデックスを削除できます。つまり、削除するために最初に再表示する必要はありません。
ただし、影響が負の場合、ユーザーは削除されたインデックスを再度作成する必要がある代わりに、インデックスを再表示できます。 また、インデックスは非表示になっている間完全に維持されているため、非表示が解除されたらすぐに使用できるようになります。
非表示インデックスの詳細については、「 非表示のインデックス 」を参照してください。
例
pets
コレクションを検討します。pets
コレクションで getIndexes()
メソッドを呼び出すと、次のインデックスが返されます。
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "cat" : -1 }, "name" : "catIdx" }, { "v" : 2, "key" : { "cat" : 1, "dog" : -1 }, "name" : "cat_1_dog_-1" } ]
フィールド cat
の単一フィールド インデックスには、ユーザー指定の名前の catIdx
[1] とインデックス仕様ドキュメントの { "cat" : -1 }
があります。
インデックス catIdx
を削除するには、次のいずれかのインデックス名を使用できます。
db.pets.dropIndex( "catIdx" )
または、インデックス仕様ドキュメント { "cat" : -1 }
を使用できます。
db.pets.dropIndex( { "cat" : -1 } )
[1] | インデックスの作成時に、ユーザーがインデックス名を指定しない場合、システムはインデックス キー フィールドと値をアンダースコアで連結して名前を生成します。例: cat_1 |