2012-07-27 3 views
1

Mongo db 용 C# 드라이버를 사용하고 있으며 제한된 컬렉션의 크기 조정을 구현하려고합니다. 이 answer의 조언에 따라 임시 이름으로 새 모음을 만들고 이전 모음의 문서를 복사하고 이전 모음을 제거하고 새 모음의 이름을 바꾼다. 그러나 어떻게 이것을 효율적으로 할 수 있습니까? 현재 컬렉션의 크기는 700MB이며 모든 데이터를 복사하는 데 꽤 많은 시간이 걸립니다. 서버가 실행중인 컴퓨터에서이 코드를 실행할 가능성이 높습니다.하나의 컬렉션에서 다른 문서로 많은 수의 문서를 효율적으로 복사하는 방법

답변

1

캡 된 컬렉션의 크기를 조정하는 가장 효율적인 방법은 새 템플릿을 만들어 문서를 복사 한 다음 이전 컬렉션의 이름을 바꾸고 참조 된 answer에 철자가있는 새 이름으로 바꿉니다.

참고 : 전환 할 때 아무도 이전 컬렉션을 삽입/업데이트하지 않도록하십시오. 이 코드를 db.eval ("....")로 실행하면 서버가 실행되는 동안 서버가 잠 깁니다.

1

하지만 어떻게 효율적으로 수행 할 수 있습니까?

정말로 할 수 없습니다. 이전 답변은 10gen (MongoDB 뒤의 회사)의 지원 엔지니어로 일하는 Scott Hernandez의 대답입니다. 그는 MongoDB뿐만 아니라 행성에있는 사람을 알고 있기 때문에 만약 그의 대답이 작동하지 않는다면, 완전히 다른 을 찾아야합니다..

완전히 다른 무언가를

...

코드를 통해 해결책을 시도해보십시오.

새 컬렉션을 만들고 새 컬렉션에 쓸 수 있지만 새 컬렉션과 이전 컬렉션에서 모두 읽을 수 있도록 코드를 수정하십시오. 약간 더 느려질 것입니다 (글을 쓰기 전에 두 컬렉션을 모두 확인해야합니다). 하지만 결국 모든 데이터가 새 컬렉션에 포함되며 이전 컬렉션에서 읽는 것을 중지 할 수 있습니다.

관련 문제