renameCollection
renameCollection
コマンドは、コレクションの名前を、ストレージ構成で指定された新しい名前に変更します。 このコマンドは、 Atlas user 認証データベースである admin
データベースに対してのみ実行できます。 コマンドは、 ワイルドカード コレクション関数( collectionName()
)によって動的に作成されたコレクションの名前変更をサポートしていません。
構文
db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
フィールド
フィールド | タイプ | 説明 | 必須 |
---|---|---|---|
| string | コレクション名前空間。データベース名、ドット( | はい |
| string | 名前空間として指定されたコレクションの新しい名前。データベース名、ドット(
| はい |
| ブール値 | コレクションの名前を、データベースに既に存在する名前に変更するかどうかを指定します。 値は | no |
出力
コマンドは、成功した場合、次の出力を返します。 コレクションの検証で コマンドを実行し、結果を検証できます。 失敗した場合に推奨される解決策については、以下の「 エラーのトラブルシューティング 」を参照してください。
{ "ok" : 1 }
例
これらの例では、ストレージ構成で次のdatabases
とcollections
を使用します。
"databases" : [ { "name": "multiCollDB", "collections": [ { "name": "air_airlines", "dataSources": [{ "storeName" : "egS3Store", "path" : "egData/air_airlines.json" }] }, { "name": "airbnb", "dataSources": [{ "storeName" : "sampleS3Store", "path" : "json/airbnb/*" }] }, { "name": "weather", "dataSources": [{ "storeName" : "sampleS3Store", "path" : "json/weather/*" }] } ] } ]
基本的な例
次のrenameCollection
コマンドは、 multiCollDB
という名前のデータベース内のair_airlines
コレクションの名前をairlines
に変更します。
use admin db.runCommand({ "renameCollection": "multiCollDB.air_airlines", "to": "multiCollDB.airlines" })
上記のコマンドでは、次の出力が印刷されます。
{ "ok" : 1 }
dropTarget
例
次のrenameCollection
コマンド:
multiCollDB
という名前のデータベース内のweather
コレクションの名前をairbnb
に変更します。これは同じデータベース内の既存のコレクションの名前です。airbnb
コレクション データをweather
コレクション内のデータに置き換えます。
use admin db.runCommand({ "renameCollection": "multiCollDB.weather", "to": "multiCollDB.airbnb", "dropTarget": true })
上記のコマンドでは、次の出力が印刷されます。
{ "ok" : 1 }
次のコマンドは、コレクションの名前が正常に変更されたことを示しています。
> show collections airbnb > db.runCommand({ "storageGetConfig" : 1 }) { "ok" : 1, "storage" : { "stores" : [ { "name" : "egS3Store", "provider" : "s3", "region" : "us-east-2", "bucket" : "sbx-data-federation", "delimiter" : "/", "prefix" : "" } ], "databases" : [{ "name" : "multiCollDB", "collections" : [{ "name": "airbnb", "dataSources" : [ { "storeName" : "egS3Store", "path" : "/json/airbnb" } ] }] }] } }
コレクションを検証する
次のいずれかのコマンドを実行することで、コマンドが成功したことを確認できます。
show collections db.runCommand({ "storageGetConfig" : 1 })
エラーのトラブルシューティング
コマンドが失敗した場合は、次のいずれかのエラーが返されます。
{ "ok": 0, "errmsg": "renameCollection can only be run against the admin database", "code": 13, "codeName": "Unauthorized" }
解決策: admin
データベースに切り替えて、コマンドを再実行します。 admin
データベースに切り替えるには、 use admin
コマンドを実行します。
{ "ok": 0, "errmsg": "Invalid namespace specified '<ns>'", "code": 73, "codeName": "InvalidNamespace" }
解決策:指定された名前空間(データベースまたはコレクション)がストレージ構成に存在することを確認します。
{ "ok": 0, "errmsg": "Invalid target namespace: <namespace>", "code": 73, "codeName": "InvalidNamespace" }
解決策: to
フィールドで指定された名前空間(データベースまたはコレクション)が有効であることを確認します。
{ "ok": 0, "errmsg": "target namespace exists", "code": 48, "codeName": "NamespaceExists" }
解決法:指定した名前のコレクションがまだ存在しないことを確認します。 dropTarget
を省略するか、 false
に設定している場合は、コレクション名を一意にする必要があります。
{ "ok": 0, "errmsg": "source namespace does not exist", "code": 26, "codeName": "NamespaceNotFound" }
解決策:データベース名が有効で、ストレージ構成に存在することを確認します。
{ "ok": 0, "errmsg": "cannot rename a collection created from a wildcard", "code": 73, "codeName": "InvalidNamespace" }
解決策:ワイルドカード コレクション関数( collectionName()
)によって作成されたコレクションの名前は変更できません。