문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

리네임 컬렉션

이 페이지의 내용

  • 정의
  • 행동
  • 예제
renameCollection

기존 컬렉션의 이름을 변경합니다. 컬렉션 renameCollection 이름을 전체 네임스페이스 (<database>.<collection>) 형식의 로 지정합니다.

mongosh 에서 이 명령은 renameCollection() 헬퍼 메서드를 통해서도 실행할 수 있습니다.

헬퍼 메서드는 mongosh 사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 않을 수 있습니다. 편의가 필요하지 않거나 추가 반환 필드가 필요한 경우 database 명령을 사용합니다.

관리 데이터베이스 renameCollection에 대해 명령을 실행합니다.

명령은 다음과 같은 형식을 취합니다.

{ renameCollection: "<source_namespace>",
to: "<target_namespace>",
dropTarget: <true|false>,
writeConcern: <document>,
comment: <any> }

이 명령에는 다음 필드가 포함됩니다.

필드
유형
설명
renameCollection
문자열
이름을 바꿀 컬렉션의 네임스페이스입니다. 네임스페이스는 데이터베이스 이름과 컬렉션 이름의 조합입니다.
to
문자열
컬렉션의 새 네임스페이스입니다. 새 네임스페이스가 다른 데이터베이스를 지정하는 경우 renameCollection 명령은 컬렉션을 새 데이터베이스에 복사하고 소스 컬렉션을 삭제합니다. 이름 지정 제한을 참조하세요.
dropTarget
부울
선택 사항. true 인 경우 mongod 은 컬렉션 이름을 바꾸기 전에 renameCollectiontarget 를 삭제합니다. 기본값은 false 입니다.
writeConcern
문서

선택 사항입니다. 작업에 대한 쓰기 고려를 표현하는 문서입니다. 기본값 쓰기 고려를 사용하려면 생략합니다.

샤드 클러스터에서 실행하는 경우 는 명령과mongos 해당 renameCollection 헬퍼 의 쓰기 고려를 db.collection.renameCollection() "majority"로 변환합니다.

comment
어떤

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

MongoDB 5 부터 시작.0, renameCollection 명령을 사용하여 샤드 컬렉션의 이름을 변경할 수 있습니다. 대상 데이터베이스는 소스 데이터베이스와 동일해야 합니다.

소스 데이터베이스와 대상 데이터베이스가 동일한 프라이머리 샤드에 있는 한, renameCollection 를 사용하여 샤드 클러스터에서 샤딩되지 않은 컬렉션의 이름을 바꿀 수 있습니다.

renameCollection target 이(가) 기존 컬렉션의 이름 dropTarget: true이고 를 지정하지 않으면 이(가) 실패합니다.

버전 3.6에서 변경됨.

renameCollection 는 대상 네임스페이스에 따라 성능에 미치는 영향이 다릅니다.

대상 데이터베이스가 소스 데이터베이스와 동일한 경우 renameCollection 는 네임스페이스를 변경하기만 하면 됩니다. 이는 빠른 작업입니다.

대상 데이터베이스가 소스 데이터베이스와 다른 경우 renameCollection 는 소스 컬렉션의 모든 문서를 대상 컬렉션으로 복사합니다. 컬렉션의 크기에 따라 완료하는 데 시간이 더 걸릴 수 있습니다.

버전 5.0에서 변경됨

샤딩된 클러스터에서 샤딩된 컬렉션이나 샤딩되지 않은 컬렉션의 이름을 변경할 때 소스 및 대상 컬렉션은 모든 샤드에서만 독점적으로 잠깁니다. 소스 및 대상 컬렉션에 대한 후속 작업은 이름 바꾸기 작업이 완료될 때까지 기다려야 합니다.

MongoDB 잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.

버전 4.2에서 변경되었습니다.

동일한 데이터베이스 내에서 컬렉션의 이름을 변경하는 경우 renameCollection 는 작업 기간 동안 소스 및 대상 컬렉션에 대한 배타 락을 얻습니다. 컬렉션에 대한 모든 후속 작업은 renameCollection 이 완료될 때까지 기다려야 합니다.

MongoDB 4 이전 버전.2, 동일한 데이터베이스 내에서 컬렉션 이름을 renameCollection (으)로 변경하려면 배타적 데이터베이스 잠금이 필요했습니다.

서로 다른 데이터베이스 간에 컬렉션 이름을 변경하는 경우 renameCollection 잠금 동작은 MongoDB 버전에 따라 달라집니다.

  • MongoDB 4 의 경우.2.2 이상에서는 renameCollection 대상 데이터베이스에 대한 배타적(W) 잠금, 소스 데이터베이스에 대한 의도 공유(r) 잠금, 소스 컬렉션에 대한 공유(S) 잠금을 얻습니다. 대상 데이터베이스에 대한 후속 작업은 renameCollection 이 독점 데이터베이스 잠금을 해제할 때까지 기다려야 합니다.

  • MongoDB 4 의 경우.2.1 이하에서는 renameCollection 배타적(W) 글로벌 잠금을 얻습니다. mongod 에 대한 후속 작업은 renameCollection 가 전역 잠금을 해제할 때까지 기다려야 합니다.

MongoDB 잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.

  • 복제된 데이터베이스의 컬렉션 이름을 복제되지 않은 local 데이터베이스로 바꿀 수 없습니다.

  • 복제되지 않은 local 데이터베이스의 collection 이름은 복제된 데이터베이스로 변경할 수 없습니다.

경고

db.collection.renameCollection() 메서드 및 renameCollection 명령은 열려 있는 커서를 무효화하여 현재 데이터를 반환하는 쿼리를 중단합니다.

Change Streams 의 경우,db.collection.renameCollection() 메서드와 renameCollection 명령은 소스 또는 대상 컬렉션에 열려 있는 기존 Change Streams 에 대해 무효화 를 생성합니다.

클라이언트가 덤프 프로세스 중에 renameCollection 명령을 실행하면 --oplog 로 시작된 mongodump 는 실패합니다. 자세한 내용은 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" )
← 재색인

이 페이지의 내용