정의
renameCollection기존 컬렉션 의 이름을 변경합니다. 컬렉션 이름을
renameCollection전체 네임스페이스 () 형식의 로<database>.<collection>지정합니다.팁
In
mongosh, this command can also be run through therenameCollection()helper method.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.관리 데이터베이스
renameCollection에 대해 명령을 실행합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
db.runCommand( { renameCollection: "<source_namespace>", to: "<target_namespace>", dropTarget: <true|false>, writeConcern: <document>, comment: <any> } )
명령 필드
이 명령에는 다음 필드가 포함됩니다.
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 이름을 바꿀 컬렉션의 네임스페이스입니다. 네임스페이스는 데이터베이스 이름과 컬렉션 이름의 조합입니다. |
| 문자열 | 컬렉션 의 새 네임스페이스 입니다. 새 네임스페이스 다른 데이터베이스 지정하는 경우 MongoDB Atlas 배포서버에서는 |
| 부울 | 선택 |
| 문서 | 선택 사항입니다. 작업에 대한 쓰기 고려를 표현하는 문서입니다. 기본값 쓰기 고려를 사용하려면 생략합니다. When issued on a sharded cluster, |
| any | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다. |
행동
샤드 컬렉션
MongoDB 5.0 부터는 renameCollection 명령을 사용하여 샤딩된 컬렉션 의 이름을 변경할 수 있습니다. 대상 데이터베이스 소스 데이터베이스 와 동일해야 합니다.
샤딩되지 않은 컬렉션
소스 데이터베이스와 대상 데이터베이스가 동일한 프라이머리 샤드 에 있는 한, 를 사용하여 샤딩된 클러스터 에서 샤딩되지 않은 컬렉션 이름을 바꿀 수 있습니다.renameCollection
Time Series 컬렉션
를 사용하여 time series 컬렉션 이름을 바꿀 renameCollection 수 없습니다. 자세한 내용은 Time Series 컬렉션 제한을 참조하세요.
기존 대상 컬렉션
이(가) 기존 컬렉션 의 이름이고renameCollection 을(를) target 지정하지 않은 dropTarget: true 경우 는 실패합니다.
진행 중인 인덱스 빌드
소스 컬렉션 에서 인덱스 빌드 진행 중인 경우 이름 바꾸기 작업이 실패하고 BackgroundOperationInProgressForNamespace 오류가 발생합니다. 대상 컬렉션 에서 인덱스 빌드 진행 중이고 dropTarget: true을 지정하는 경우에도 작업이 실패합니다.
컬렉션 의 이름을 바꾸려면 인덱스 빌드 완료될 때까지 기다린 다음 작업을 다시 시도합니다. 진행 중인 인덱스 빌드를 확인하려면 메서드를 db.currentOp() 사용합니다.
성능
버전 3.6에서 변경되었습니다.
renameCollection는 대상 네임스페이스 에 따라 성능에 미치는 영향이 다릅니다.
대상 데이터베이스 소스 데이터베이스renameCollection 와 동일한 경우 는 네임스페이스 만 변경합니다. 이는 빠른 작업입니다.
대상 데이터베이스 소스 데이터베이스 와 다른 경우 는 소스 컬렉션renameCollection 의 모든 문서를 대상 컬렉션 으로 복사합니다. 컬렉션 의 크기에 따라 완료하는 데 시간이 더 걸릴 수 있습니다.
샤딩된 클러스터의 리소스 잠금
버전 5.0에서 변경되었습니다.
샤딩된 클러스터에서 샤딩된 컬렉션이나 샤딩되지 않은 컬렉션의 이름을 변경할 때 소스 및 대상 컬렉션은 모든 샤드에서만 독점적으로 잠깁니다. 소스 및 대상 컬렉션에 대한 후속 작업은 이름 바꾸기 작업이 완료될 때까지 기다려야 합니다.
MongoDB 잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.
복제본 세트의 리소스 잠금
동일한 데이터베이스 내에서 컬렉션 이름을 변경하는 경우renameCollection 는 작업 기간 동안 소스 및 대상 컬렉션에 대한 배타 락 얻습니다. 컬렉션에 대한 모든 후속 작업은 가 renameCollection 완료될 때까지 기다려야 합니다.
서로 다른 데이터베이스 간에 컬렉션 이름을 renameCollection 변경하는 경우 는 대상 데이터베이스 에 대한 배타적(W) 락 , 소스 데이터베이스 에 대한 의도 공유(r)renameCollection 락 및 소스 컬렉션 에 대한 공유(S) 락 얻습니다. 대상 데이터베이스 에 대한 후속 작업은 이 독점 데이터베이스 락 해제할 때까지 기다려야 합니다.
MongoDB 잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.
local Database
복제된 데이터베이스의 컬렉션 이름을 복제되지 않은
local데이터베이스로 바꿀 수 없습니다.복제되지 않은
local데이터베이스의 collection 이름은 복제된 데이터베이스로 변경할 수 없습니다.
커서 열기
경고
db.collection.renameCollection() 메서드 및 명령은 열린 커서를 무효화하여 현재 데이터를 반환하는 쿼리를 renameCollection 중단합니다.
변경 스트림
MongoDB Change Streams 의 경우 db.collection.renameCollection() 메서드와 renameCollection 명령은 소스 또는 대상 컬렉션 에서 열려 있는 기존 MongoDB Change Streams 에 대해 무효화 이벤트를 생성합니다.
다음과의 상호 작용 mongodump
클라이언트 덤프 프로세스 중에 mongodump 명령을 --oplog renameCollection 실행하면 mongodump.--oplog로 시작된 는 실패합니다. 자세한 내용은 를 참조하세요.
예시
다음 예시에서는 test 데이터베이스의 orders collection 이름을 test 데이터베이스의 orders2014로 변경합니다.
db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )
mongosh는 동일한 db.collection.renameCollection() 데이터베이스 내에서 컬렉션의 이름을 바꾸는 명령에 대한 헬퍼를 제공합니다. 다음은 이전 예시 와 동일합니다.
use test db.orders.renameCollection( "orders2014" )