MongoDB とドライバー
定義
db.collection.renameCollection(target, dropTarget)コレクションの名前を変更します。
renameCollectionデータベースコマンドのラッパーを提供します。
パラメーター
Parameter | タイプ | 説明 |
|---|---|---|
| string | コレクションの新しい名前。文字列を引用符で囲みます。詳細は、「命名制限」を参照してください。 |
| ブール値 | 任意。 |
動作
db.collection.renameCollection()メソッドは、特定のコレクションに関連付けられたメタデータを変更することにより、コレクション内で動作します。
追加の警告とメッセージについては、ドキュメント「renameCollection」を参照してください。
警告
db.collection.renameCollection()メソッドと コマンドは、現在データを返しているクエリを中断するオープンrenameCollection カーソルを無効にします。
MongoDB Change Streams の場合、db.collection.renameCollection() メソッドと コマンドは、ソース コレクションまたはターゲットコレクションで開かれている既存のMongoDBrenameCollection Change Streams を 無効化イベント を作成します。
この方法には、次の制限があります。
db.collection.renameCollection()はデータベース間でコレクションを移動できません。これらの名前変更操作にはrenameCollectionを使用します。ビューの名前を変更することはできません。
コレクションの名前をそれ自体に変更することはできません。コレクションの名前をそれ自体に変更しようとすると、
IllegalOperationエラーがスローされます。
シャーディングされたクラスターでのリソース ロック
バージョン5.0で変更。
シャーディングされたクラスター内のシャーディングされたコレクションまたはシャーディングされていないコレクションの名前を変更すると、ソース コレクションとターゲット コレクションだけがすべてのシャードでロックされます。ソース コレクションとターゲット コレクションでのその後の操作は、名前変更操作が完了するまで待つ必要があります。
MongoDB でのロックの詳細については、「FAQ: 同時実行性」を参照してください。
レプリカセットでのリソース ロック
renameCollection() obtains an exclusive lock on the source and target collections for the duration of the operation. All subsequent operations on the collections must wait until renameCollection() completes.
相互作用: mongodump
mongodump--oplogdb.collection.renameCollection()で開始された は、ダンプ プロセス中にクライアントが を発行すると失敗します。詳しくは、mongodump.--oplog を参照してください。
例
db.collection.renameCollection()コレクションオブジェクトで メソッドを呼び出します。 (例: )。
db.rrecord.renameCollection("record")
この操作により、 rrecordコレクションの名前がrecordに変更されます。ターゲット名(つまり、record )が既存のコレクションの名前である場合、操作は失敗します。