Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

dropIndexes

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
dropIndexes

バージョン 6.0 での変更

dropIndexesコマンドは、指定されたコレクションから 1 つ以上のインデックス( _idフィールドのインデックスと最後に残っているシャードキー インデックス(存在する場合)を除く)を削除します。

Tip

mongoshでは、このコマンドは db.collection.dropIndex()およびdb.collection.dropIndexes()ヘルパー メソッドを通じても実行できます。

ヘルパー メソッドはmongoshユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.runCommand(
{
dropIndexes: <string>,
index: <string|document|arrayofstrings>,
writeConcern: <document>, comment: <any>
}
)

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明
dropIndexes
文字列
削除するインデックスを持つコレクションの名前。
index
string またはドキュメントまたは string の配列

削除するインデックス。

  • _idインデックスと最後に残っているシャードキー インデックスを除くすべてのインデックスをコレクションから削除するには(存在する場合)、 "*"を指定します。

  • 単一のインデックスを削除するには、インデックス名、インデックス仕様ドキュメント(インデックスがテキストインデックスの場合を除く)、またはインデックス名の配列のいずれかを指定します。 テキストインデックスを削除するには、インデックス仕様ドキュメントの代わりにインデックス名を指定します。 このインデックスが最後に残っているシャードキー インデックスである場合、 dropIndexesはエラーを発生させます。

  • 複数のインデックスを削除するには、インデックス名の配列を指定します。

writeConcern
ドキュメント
任意。 コマンドの drop書込み保証( write concern ) を表すドキュメント。デフォルトの書込み保証を使用する場合は省略します。
comment
any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

MongoDB 6.0以降、最後に残っているシャードキー互換インデックスを削除するために使用しようとすると、 dropIndexesによりエラーが発生します。 "*"dropIndexesに渡すと、 _idインデックスと最後に残っているシャードキー互換インデックス(存在する場合)を 除く すべてのインデックスが削除されます。

MongoDB 5.2以降では、別のインデックスでビルドが進行中の場合でも、 dropIndexesを使用して同じコレクションの既存のインデックスを削除できます。 以前のバージョンでは、インデックスのビルドが進行中に別のインデックスを削除しようとするとBackgroundOperationInProgressForNamespaceエラーが発生していました。

dropIndexes操作は、削除されるインデックスを使用しているクエリのみを強制終了します。 これには、クエリ プランの一部としてインデックスを考慮するクエリが含まれる場合があります。

dropIndexesは、操作中、指定されたコレクションに対する排他ロックを取得します。 コレクションに対する後続のすべての操作は、 dropIndexesがロックを解放するまで待機する必要があります。

存在しないインデックスを含むインデックス名の配列がメソッドに渡された場合、指定されたインデックスはいずれも削除せずにエラーになります。

_idフィールドのデフォルト インデックスを削除することはできません。

テキストインデックスを削除するには、インデックス仕様ドキュメントの代わりにインデックス名を指定します。

dropIndexesに指定されたインデックスがまだビルド中の場合、 dropIndexesは進行中のビルドを停止しようとします。 インデックスのビルドを停止すると、ビルドされたインデックスを削除するのと同じ効果があります。

レプリカセットの場合は、 プライマリ でdropIndexes を実行します。プライマリはインデックスのビルドを停止し、関連する "abortIndexBuild" oplogエントリを作成します。 "abortIndexBuild" oplog エントリを複製するセカンダリは、進行中のインデックスビルドを停止し、ビルドジョブを破棄します。 インデックス構築プロセスの詳細なドキュメントについては、「 インデックス構築プロセス 」を参照してください。

currentOp操作またはcreateIndexesdb.collection.createIndexes() 操作に関連付けられたインデックスビルドを識別するには、 を使用します。例については、「アクティブなインデックス操作」を参照してください。

MongoDB では、クエリ プランナーからインデックスを非表示または再表示する機能が提供されます。 プランナーからインデックスを非表示にすることで、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。

評価後にユーザーがインデックスを削除する場合は、非表示のインデックスを削除できます。つまり、削除するために最初に再表示する必要はありません。

ただし、影響が負の場合、ユーザーは削除されたインデックスを再度作成する必要がある代わりに、インデックスを再表示できます。 また、インデックスは非表示になっている間完全に維持されているため、非表示が解除されたらすぐに使用できるようになります。

非表示インデックスの詳細については、「 非表示のインデックス 」を参照してください

  • _id以外のすべてのインデックス を削除するには、 index"*"を指定します。

    db.runCommand( { dropIndexes: "collection", index: "*" } )
  • 単一のインデックスを削除するには、削除するインデックスの名前を指定して コマンドを発行します。 たとえば、 age_1という名前のインデックスを削除するには、次のコマンドを使用します。

    db.runCommand( { dropIndexes: "collection", index: "age_1" })

    mongoshはヘルパー メソッドdb.collection.dropIndex()db.collection.dropIndexes()を提供します。

    db.collection.dropIndex("age_1");
  • 複数のインデックスを削除するには、以下のようにインデックス名の配列を指定して コマンドを発行します。

    db.runCommand( { dropIndexes: "collection", index: [ "age_1", "age_1_status_1" ] } )

Tip

以下も参照してください。

戻る

dropConnections