2017-04-12 2 views
1

내 컬렉션을 원자 적으로 "다시 작성"하고 싶습니다. 이는 모든 기존 문서를 삭제하고 처음부터 채우는 것을 의미합니다. 트랜잭션이 지원되지 않으므로 콜렉션이 비어있는 작은 시간 간격이 있기 때문에 피하려는 항목입니다.pymongo에서 컬렉션 다시 작성

원자 적으로 이러한 작업을 수행 할 수있는 방법이 있습니까? 그래서 콜렉션이 비어 있지 않은 지점은 없을 것입니다.

답변

1

새 컬렉션을 다른 이름으로 빌드 한 다음 rename 명령을 사용하여 새 컬렉션의 이름을 바꾸고 기존 컬렉션을 삭제할 수 있습니다 (dropTarget=True 옵션 사용). 이 명령은 현재 데이터를 반환되는 쿼리를 중단 열린 커서를 무효화

  • :

    는하지만 몇 가지주의 사항이 있습니다.

  • renameCollection은 조작 기간 동안의 모든 데이터베이스 활동을 차단합니다.
  • renameCollection은 공유 컬렉션과 호환되지 않습니다.
  • renameCollection 작업이 완료되지 않으면 대상 컬렉션 및 인덱스를 사용할 수 없으며 정리 작업을 수동으로 수행해야합니다.

자세한 내용은 official docs에서 확인할 수 있습니다.

+0

감사합니다. 덕분에 많은 도움이되었습니다. –