한 컬렉션에서 다른 컬렉션으로 mongo 복사(같은 DB에 있음
몽고드에게 전화가 왔습니다.test
그리고 이 DB에는 두 개의 컬렉션이 있습니다.collection1
그리고.collection1_backup
내용을 대체하는 방법collection1
로부터의 자료를 가지고.collection1_backup
.
이 작업을 수행하는 가장 좋은 방법(수집의 이름을 고려할 때)은 다음과 같습니다._backup
) mongorestore를 사용했을 수 있습니다. http://docs.mongodb.org/manual/reference/mongorestore/
그러나 이 경우에는 다릅니다.컬렉션이 분할되지 않은 경우 사용할 수 있습니다.renameCollection
( http://docs.mongodb.org/manual/reference/command/renameCollection/ ) 또는 (JavaScript 코드에서) 보다 수동적인 방법을 사용할 수 있습니다.
db.collection1.drop(); // Drop entire other collection
db.collection1_backup.find().forEach(function(doc){
db.collection1.insert(doc); // start to replace
});
이것들이 가장 일반적인 방법입니다.
이 작업은 간단한 명령을 사용하여 수행할 수 있습니다.
db.collection1_backup.aggregate([ { $match: {} }, { $out: "collection1" } ])
이 명령은 collection1의 모든 문서를 제거한 다음 collection1_backup의 복제본을 만듭니다.
일반 명령은 다음과 같습니다.
db.<SOURCE_COLLECTION>.aggregate([ { $match: {} }, { $out: "<TARGET_COLLECTION>" } ])
TARGET_COLLECTION이 존재하지 않는 경우 위의 명령을 사용하여 TARGET_COLLECTION을 생성합니다.
또한 유용: 컬렉션을 json 파일로 내보냅니다.
mongoexport --collection collection1_backup --out collection1.json
json 파일에서 컬렉션을 가져오다
mongoimport --db test --collection collection1 --file collection1.json
백업/파일에서 단일 컬렉션을 가져오려면 를 사용하여 *.bson 파일을 *.json 파일로 변환해야 합니다.
bsondump collection1_backup.bson > collection1_backup.json
그냥 이렇게 하세요.
//수집 삭제1
db.collection1.drop();
//collection1_backup에서 collection1로 데이터 복사
db.collection1.insert(db.collection1_backup.find({},{_id:0}).toArray());
Java 드라이버 사용
다음 중 하나를 시도해 보십시오.
public void copyTo(String db,String sourceCollection,String destinationCollection,int limit) throws
UnknownHostException {
MongoClient mongo = new MongoClient("localhost", 27017);
DB database = mongo.getDB(db);
DBCollection collection = database.getCollection(sourceCollection);
DBCursor dbCursor = collection.find().limit(limit);
List<DBObject> list = dbCursor.toArray();
DBCollection destination = database.getCollection(destinationCollection);
destination.insert(list, WriteConcern.NORMAL); //WRITE CONCERN is based on your requirment.
}
더 나은 방법은 사용하는 것입니다.
db.collection1.drop(); // Drop entire other collection
// creates an array which can be accessed from "data"
db.collection1_backup.find().toArray(function(err, data) {
// creates a collection and inserting the array at once
db.collection1.insert(data);
});
간단한 명령을 사용하여 MongoDB Collection 백업을 수행할 수 있습니다.MongoDB 4.0 이전 버전에서만 작동합니다.
db.sourceCollectionName.copyTo('targetCollectionName')
대상 컬렉션 이름은 단일(') 또는 이중(") 따옴표로 묶어야 합니다.
참고:
db.collection.copyTo() 메서드는 내부적으로 eval 명령을 사용합니다.따라서 db.collection.copyTo() 작업은 db.collection.copyTo()가 완료될 때까지 다른 모든 읽기 및 쓰기 작업을 차단하는 전역 잠금을 사용합니다.
수집 삭제1
그런 다음 이 쿼리를 사용합니다.
var cursor = db.collection1_backup.find();
var data = [];
while(cursor.hasNest()){
data.push(cursor.next());
}
db.collection1.insertMany(data)
언급URL : https://stackoverflow.com/questions/13916004/mongo-copy-from-one-collection-to-another-on-the-same-db
'prosource' 카테고리의 다른 글
mongodb에 색인을 만들 수 없습니다. "키가 너무 커서 색인화할 수 없습니다." (0) | 2023.07.07 |
---|---|
PL-SQL의 contains()는 어떻게 작동합니까? (0) | 2023.07.07 |
R: c++/c#/sigma 등과 동등한 +=(+) 및 ++(+)? (0) | 2023.07.07 |
파이어베이스 실시간 데이터베이스에서 삭제하는 방법은 무엇입니까? (0) | 2023.07.07 |
T-SQL: 15분 간격으로 반올림 (0) | 2023.07.07 |