dropIndexes() (インデックスの一括削除)
最終更新:2026-10-09
dropIndexes() (インデックスの一括削除)
dropIndexes() は1つ以上のインデックスを削除します。例: `db.users.dropIndexes()` は _id 以外のすべてのインデックスを削除し、名前の配列を渡すと特定のものを削除します。また、指定した名前をプレフィックスに持つすべてのインデックスも削除します('age_1' は 'age_1_text' も巻き添えにします)。_id インデックスは常に残ります。テスト環境のクリーンアップによく使われます。
| カテゴリ | インデックスと管理 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.dropIndexes(<indexNames>)
⚙️ パラメータ
| インデックス名の配列 | 任意。削除する名前。省略すると _id 以外のすべてのインデックスを削除します。 |
|---|
戻り値:削除されたインデックスの件数とステータスを持つ情報オブジェクト。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// dropIndexes: age と email のインデックスを削除する
db.users.dropIndexes(['age_1', 'email_1'])
出力:
{ ok: 1, nIndexesWas: 4, nIndexesRemoved: 2 }
📌 注意事項
- 引数を省略すると _id 以外のすべてのインデックスを削除する
- プレフィックス一致なので 'age_1' は 'age_1_text' も削除する
- _id インデックスは削除できない
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
QdropIndexes は引数なしですべてのインデックスを削除しますか?
Aはい、_id 以外のすべてです。先に getIndexes() でリストを確認してください。
QdropIndexes で特定のインデックスを対象にできますか?
Aできます。名前の配列を渡します。例: db.users.dropIndexes(['age_1', 'email_1'])
Qなぜ dropIndexes は 'age_1' より多く削除するのですか?
A名前のプレフィックスで一致するため、'age_1' で始まるすべてのインデックス(例: 'age_1_text')も削除されます。