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