Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

renameCollection

項目一覧

  • 構文
  • フィールド
  • 出力
  • 基本的な例
  • dropTarget
  • コレクションを検証する
  • エラーのトラブルシューティング

renameCollectionコマンドは、コレクションの名前を、ストレージ構成で指定された新しい名前に変更します。 このコマンドは、 Atlas user 認証データベースである admin データベースに対してのみ実行できます。 コマンドは、 ワイルドカード コレクション関数collectionName() )によって動的に作成されたコレクションの名前変更をサポートしていません。

db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
フィールド
タイプ
説明
必須
renameCollection
string
コレクション名前空間。データベース名、ドット( . )セパレーター、コレクション名が含まれます。 たとえば<database>.<collection>
はい
to
string

名前空間として指定されたコレクションの新しい名前。データベース名、ドット( . )セパレーター、新しいコレクション名が含まれます。 新しい名前:

  • dropTargetが省略されているか、 falseに設定されている場合は一意である必要があります。

  • dropTargetが指定され、かつtrueに設定されている場合は、同じデータベース内の既存のコレクションの名前を指定できます(つまりdropTarget == true )。

はい
dropTarget
ブール値
コレクションの名前を、データベースに既に存在する名前に変更するかどうかを指定します。 値はtrueまたはfalseです。 デフォルト値はfalseであり、コレクションの新しい名前は一意である必要があることを意味します。 trueの場合、 は既存のコレクションのデータを、名前が変更されたコレクションのデータで上書きします。
no

コマンドは、成功した場合、次の出力を返します。 コレクションの検証で コマンドを実行し、結果を検証できます。 失敗した場合に推奨される解決策については、以下の「 エラーのトラブルシューティング 」を参照してください。

{ "ok" : 1 }

これらの例では、ストレージ構成で次のdatabasescollectionsを使用します。

"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 }

次のrenameCollectionコマンド:

  1. multiCollDBという名前のデータベース内のweatherコレクションの名前をairbnbに変更します。これは同じデータベース内の既存のコレクションの名前です。

  2. 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() )によって作成されたコレクションの名前は変更できません。

戻る

コレクションとビューを追加する