문서 메뉴
문서 홈
/
MongoDB 아틀라스
/ / /

renameCollection

이 페이지의 내용

  • 구문
  • 필드
  • 출력
  • 예제
  • 기본 예시
  • dropTarget 예제
  • 컬렉션 검증
  • 오류 문제 해결

renameCollection 명령은 컬렉션의 이름을 스토리지 구성에 지정된 새 이름으로 바꿉니다. 이 명령은 Atlas 사용자 인증 데이터베이스admin 데이터베이스에 대해서만 실행할 수 있습니다. 이 명령은 와일드카드 컬렉션 함수 (collectionName())로 동적으로 생성된 컬렉션의 이름 변경을 지원하지 않습니다.

db.runCommand({ "renameCollection": "<namespace>", "to": "<namespace>", "dropTarget": true|false })
필드
유형
설명
필수 사항입니다.
renameCollection
문자열
데이터베이스 이름, 점(.) 구분 기호 및 컬렉션 이름을 포함하는 컬렉션 네임스페이스 입니다. 예: <database>.<collection>
to
문자열

컬렉션의 새 이름은 데이터베이스 이름, 점(.) 구분 기호 및 새 컬렉션 이름을 포함하는 네임스페이스 로 지정됩니다. 새 이름:

  • dropTarget이 생략되거나 false로 설정된 경우 고유해야 합니다.

  • dropTarget지정되고 true(즉, dropTarget == true)로 설정된 경우 동일한 데이터베이스에 있는 기존 컬렉션의 이름일 수 있습니다.

dropTarget
부울
데이터베이스에 이미 존재하는 이름으로 컬렉션 이름을 바꿀지 여부를 지정합니다. 값은 true 또는 false일 수 있습니다. 기본값은 false입니다. 이는 컬렉션의 새 이름이 고유해야 함을 의미합니다. true인 경우 기존 컬렉션의 데이터를 이름이 바뀐 컬렉션의 데이터로 덮어씁니다.
아니

명령이 성공하면 다음 출력을 반환합니다. 컬렉션 검증 에서 명령을 실행하여 결과를 확인할 수 있습니다. 실패할 경우 아래의 오류 문제 해결 을 참조하여 권장 해결 방법을 확인하세요.

{ "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 명령은 데이터베이스의 air_airlines 컬렉션 이름을 multiCollDB에서 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())로 생성된 컬렉션은 이름을 바꿀 수 없습니다.

돌아가기

컬렉션 추가 & 보기