renameCollection
renameCollection
명령은 컬렉션 의 이름을 저장 구성에 지정된 새 이름으로 바꿉니다. 이 명령은 Atlas user 인증 데이터베이스 인 admin
데이터베이스 에 대해서만 실행 수 있습니다. 이 명령은 와일드카드 컬렉션 함수 (collectionName()
)로 동적으로 생성된 컬렉션의 이름 변경을 지원 하지 않습니다.
구문
db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
필드
필드 | 유형 | 설명 | 필수 사항입니다. |
---|---|---|---|
renameCollection | 문자열 | 네 | |
to | 문자열 | 컬렉션 의 새 이름은 데이터베이스 이름, 점(
| 네 |
dropTarget | 부울 | 데이터베이스에 이미 존재하는 이름으로 컬렉션 이름을 바꿀지 여부를 지정합니다. 값은 true 또는 false 일 수 있습니다. 기본값은 false 입니다. 이는 컬렉션의 새 이름이 고유해야 함을 의미합니다. true 인 경우 기존 컬렉션의 데이터를 이름이 바뀐 컬렉션의 데이터로 덮어씁니다. | 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
명령은 데이터베이스의 air_airlines
컬렉션 이름을 multiCollDB
에서 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()
)로 생성된 컬렉션은 이름을 바꿀 수 없습니다.