renameCollection (コレクションのリネーム)
最終更新:2026-10-09
renameCollection (コレクションのリネーム)
renameCollection はコレクションをデータベース内・データベース間でリネームし、admin データベースに対して実行する必要があります(db.adminCommand)。リネームはインデックスとメタデータごと移動し、書き込みは短時間ブロックされます。dropTarget: true は既存のターゲットを上書きします(データが削除されるため危険です)。
| カテゴリ | 管理コマンド |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.adminCommand({
renameCollection: "<db>.<collection>",
to: "<db>.<new name>",
dropTarget: false
})
⚙️ パラメータ
| renameCollection | ソースコレクションを db.collection 形式で指定します。 |
|---|---|
| to | 対象を db.collection 形式で指定します。 |
| dropTarget | 既存の対象を上書きするには true を設定します。慎重に使用してください。 |
戻り値:成功時は { ok: 1 } を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// renameCollection: コレクションのリネーム
db.adminCommand({
renameCollection: 'shop.orders_2025',
to: 'shop.orders'
})
出力:
{ ok: 1 }
📌 注意事項
- admin データベースで完全修飾名を使って実行する必要がある
- dropTarget: true はターゲットを削除する。取り扱い注意
- リネーム中、コレクションへの書き込みは短時間停止する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
QrenameCollection はデータベース間で移動できますか?
Aはい。両方の名前を db.collection 形式で修飾します。
Qリネームでデータは失われますか?
Aいいえ。ただし dropTarget: true で既存ターゲットを上書きする場合は除きます。
Qインデックスはリネーム後も残りますか?
Aはい。インデックスはデータと一緒に移動します。