MongoDB とドライバー
定義
db.collection.renameCollection(target, dropTarget)コレクションの名前を変更します。
renameCollectionデータベースコマンドのラッパーを提供します。
パラメーター
Parameter | タイプ | 説明 |
|---|---|---|
| string | コレクションの新しい名前。文字列を引用符で囲みます。詳細は、「命名制限」を参照してください。 |
| ブール値 | 任意。 |
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
Stable API でのサポート
MongoDB 8.1 以降、Stable API V1 に renameCollection が含まれています。Stable APIで renameCollection を使用するには、 MongoDB 8.1 以降を実行中配置にドライバーを接続する必要があります。
動作
db.collection.renameCollection() メソッドは、特定のコレクションに関連付けられたメタデータを変更することにより、コレクション内で動作します。
追加の警告とメッセージについては、ドキュメント「renameCollection」を参照してください。
警告
db.collection.renameCollection()メソッドとrenameCollection コマンドは、オープン カーソルを無効にします。これにより、 ソース コレクション または ターゲットコレクションで開かれている既存の変更ストリームの 無効化イベントが作成され、名前が変更されたコレクションから現在データを返しているクエリも中断されます。
この方法には、次の制限があります。
db.collection.renameCollection()は、データベース間でコレクションを移動できません。これらの名前を変更する操作には、renameCollectionを使用します。ビューの名前を変更することはできません。
db.collection.renameCollection()は、時系列コレクションではサポートされていません。コレクションの名前をそれ自体に変更することはできません。コレクションの名前をそれ自体に変更しようとすると、
IllegalOperationエラーがスローされます。
シャーディングされたクラスターでのリソース ロック
バージョン5.0で変更。
シャーディングされたクラスター内のシャーディングされたコレクションまたはシャーディングされていないコレクションの名前を変更すると、ソース コレクションとターゲット コレクションだけがすべてのシャードでロックされます。ソース コレクションとターゲット コレクションでのその後の操作は、名前変更操作が完了するまで待つ必要があります。
MongoDB でのロックの詳細については、「FAQ: 同時実行性」を参照してください。
レプリカセットでのリソース ロック
renameCollection()は、操作中にソース コレクションとターゲット コレクションに対して排他ロックを取得します。コレクションに対する後続のすべての操作は、renameCollection() が完了するまで待機する必要があります。
相互作用: mongodump
mongodump--oplogdb.collection.renameCollection()で開始された は、ダンプ プロセス中にクライアントが を発行すると失敗します。詳しくは、mongodump.--oplog を参照してください。
例
コレクションオブジェクトで db.collection.renameCollection() メソッドを呼び出します。以下に例を挙げます。
db.rrecord.renameCollection("record")
この操作により、 rrecordコレクションの名前がrecordに変更されます。ターゲット名(つまり、record )が既存のコレクションの名前である場合、操作は失敗します。