MongoDB에서 컬렉션 복제
MongoDB 컬렉션을 복제하여 동일한 서버에 다른 이름으로 저장하려고 합니다.예를 들어 현재 demo1.categories, demo1.users 및 demo2.users 컬렉션이 있습니다.
저는 "demo1.categories"와 동일한 "demo2.categories"를 갖고 싶습니다. (그냥 이름만 다릅니다.)
그러나 MongoDB 문서는 다시 구조되었습니다.
컬렉션의 이름이 실제로 "demo1.categories"라고 가정합니다.
db.demo1.categories.find().forEach( function(x){db.demo2.categories.insert(x)} );
가장 간단하고 효율적인 방법은 copyTo()를 사용하는 것이므로 다음을 사용할 수 있습니다.
db.source.copyTo("target");
만일"target"
존재하지 않습니다. 생성됩니다.
업데이트 --
CopyTo Documentation에 따르면 다음과 같은 이유가 있습니다.copyTo()
내부적으로 eval을 사용하면 복사 작업이 mongod 인스턴스의 다른 모든 작업을 차단합니다.그래서 그것은 생산 환경에서 사용되어서는 안 됩니다.
업데이트 --
왜냐면CopyTo()
내부적으로 사용 및eval()
버전 3.0 이후에는 더 이상 사용되지 않습니다.CopyTo()
버전 3.0 이후에는 더 이상 사용되지 않습니다.
컬렉션을 복제하는 가장 빠른 방법은 다음과 같습니다.
mongoexport -d db_name -c src_collection | mongoimport -d db_name -c dst_collection --drop
db_name의 src_collection을 dst_collection으로 복제합니다.또는 bson 레벨에서 두 단계로 수행할 수 있습니다.
mongodump -d db_name -c src_collection
mongorestore --drop -d db_name -c dst_collection ./dump/db_name/src_collection.bson
가장 빠른 옵션은
db.myoriginal.aggregate([ { $out: "mycopy" } ])
이미 이에 대한 명령이 있습니다.
한 서버에서 다른 서버로 단일 컬렉션을 복사합니다.http://www.mongodb.org/display/DOCS/cloneCollection+Command
속도가 걱정된다면 다음을 사용하여 확인했습니다.aggregate
와 함께$project
그리고.$out
100배 더 빨라지려면 제한이 있는지는 모르겠지만 복사할 필드 집합을 만들어야 합니다. 예:
// Set of fields in the categories collection
var setOfFields = {field1:1, field2:1.......}
db.demo1.categories.aggregate([{ "$project": setOfFields},{ $out: "demo2.categories"}]);
모든 문서에 대해 선택한 필드 집합을 복사(프로젝트)합니다.demo1.categories
로.demo2.categories
사용 안 함db.cloneCollection()
메서드, 현재 버전에서 감가상각되었습니다.4.2
대신 사용해 보십시오.mongoexport
.
mongo 콘솔에서도 다음 작업을 수행할 수 있습니다. 여기서 db_host는 복제할 컬렉션이 있는 db_host가 있는 시스템입니다.
db.cloneCollection(, ) 사용
언급URL : https://stackoverflow.com/questions/8933307/clone-a-collection-in-mongodb
'programing' 카테고리의 다른 글
PostgreSQL 오류 '서버에 연결할 수 없음:해당 파일 또는 디렉터리가 없습니다.' (0) | 2023.05.15 |
---|---|
Python 하위 프로세스에서 예외 출력을 가져오는 방법.check_output()? (0) | 2023.05.15 |
폴더의 모든 파일과 창의 하위 폴더를 나열하는 명령 (0) | 2023.05.15 |
Azure 웹 앱에서 오류 500을 해결하는 방법은 무엇입니까? (0) | 2023.05.15 |
선택 옵션 '선택됨'을 설정합니다(값 기준). (0) | 2023.05.15 |