Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

renameCollection

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
renameCollection

既存のコレクションの名前を変更します。コレクション名を完全な名前空間<database>.<collection>)の形式で renameCollection に指定します。

Tip

mongoshでは、このコマンドはrenameCollection()ヘルパー メソッドを通じて実行することもできます。

ヘルパー メソッドはmongoshユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。

renameCollection管理データベース に対して コマンドを発行します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。 すべてのコマンドの詳細については、「サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.runCommand(
{
renameCollection: "<source_namespace>",
to: "<target_namespace>",
dropTarget: <true|false>,
writeConcern: <document>,
comment: <any>
}
)

このコマンドには次のフィールドが含まれています。

フィールド
タイプ
説明
renameCollection
string
名前を変更するコレクションの名前空間。名前空間は、データベース名とコレクションの名前の組み合わせです。
to
string
コレクションの新しい名前空間。 新しい名前空間で別のデータベースが指定されている場合、 renameCollectionコマンドはコレクションを新しいデータベースにコピーし、ソース コレクションを削除します。 詳細は、「命名制限 」を参照してください。
dropTarget
ブール値
任意。 trueの場合、コレクションの名前を変更する前に、 mongodrenameCollectiontargetを削除します。 デフォルト値はfalseです。
writeConcern
ドキュメント

任意。操作の書込み保証(write concern)を表現するドキュメント。デフォルトの書込み保証を使用する場合は省略します。

シャーディングされたクラスターで発行すると、mongos は コマンドとそのヘルパーrenameCollectiondb.collection.renameCollection() 書込み 保証を"majority" に変換します。

comment
any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

MongoDB 5.0以降では、 renameCollectionコマンドを使用してシャーディングされたコレクションの名前を変更できます。 ターゲット データベースはソース データベースと同じである必要があります。

ソース データベースとターゲット データベースが同じプライマリ シャードにある限り、 renameCollectionを使用して、シャーディングされたクラスター内のシャーディングされていないコレクションの名前を変更できます。

renameCollectionを使用して時系列コレクションの名前を変更すること はできません 。詳細については「時系列コレクションの制限 」を参照してください。

renameCollectiontargetが既存のコレクション の 名前で、 を指定しない場合、dropTarget: true は失敗します。

バージョン 3.6 で変更

renameCollectionは、ターゲットの名前空間に応じて異なるパフォーマンスへの影響を持ちます。

ターゲット データベースがソース データベースと同じ場合、 renameCollectionは名前空間のみを変更します。 これは高速な操作です。

ターゲット データベースがソース データベースと異なる場合、 renameCollectionはソース コレクションからターゲット コレクションにすべてのドキュメントをコピーします。 コレクションのサイズによっては、これが完了するまでの時間がかかる場合があります。

バージョン 5.0 での変更

シャーディングされたクラスター内のシャーディングされたコレクションまたはシャーディングされていないコレクションの名前を変更すると、ソース コレクションとターゲット コレクションだけがすべてのシャードでロックされます。ソース コレクションとターゲット コレクションでのその後の操作は、名前変更操作が完了するまで待つ必要があります。

MongoDB でのロックの詳細については、「FAQ: 同時実行性」を参照してください。

同じデータベース内のコレクションの名前を変更する場合、 renameCollectionは操作中にソース コレクションとターゲット コレクションに対して排他ロックを取得します。 コレクションに対する後続のすべての操作は、 renameCollectionが完了するまで待機する必要があります。

異なるデータベース間でコレクションの名前を変更する場合、 renameCollectionはターゲット データベースに対して排他(W)ロック、ソース データベースに対して意向共有(r)ロック、ソース コレクションに対して共有(S)ロックを取得します。 ターゲット データベースでのその後の操作は、 renameCollectionが排他データベース ロックを解放するまで待機する必要があります。

MongoDB でのロックの詳細については、「FAQ: 同時実行性」を参照してください。

  • コレクションの名前を、複製されたデータベースから、複製されていない local データベースに変更することはできません。

  • コレクションの名前を、複製されていない local データベースから複製されたデータベースに変更することはできません。

警告

db.collection.renameCollection()メソッドとrenameCollectionコマンドは、現在データを返しているクエリを中断するオープン カーソルを無効にします。

Change Streamsの場合、db.collection.renameCollection() メソッドと コマンドは、ソース コレクションまたはターゲットrenameCollectionChange Streams コレクションで開かれている既存の を 無効化 を作成します。

mongodump--oplogrenameCollectionで開始された は、ダンプ プロセス中にクライアントが コマンドを発行すると失敗します。詳しくは、 mongodump.--oplogを参照してください。

次の例では、test データベース内の orders という名前のコレクションの名前を、test データベース内のコレクションの orders2014 に変更します。

db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )

mongoshは、db.collection.renameCollection() 同じ データベース内のコレクションの名前を変更するための コマンドの ヘルパーを提供します。次の は、前の例と同等です。

use test
db.orders.renameCollection( "orders2014" )

戻る

reIndex