MongoDB 대량 삽입이란?
MongoDB에서 여러 개의 문서를 한 번에 삽입해야 할 때는 initializeUnorderedBulkOp() 메서드를 사용하면 됩니다. 이 방식은 순서에 상관없이 작업을 병렬로 처리할 수 있어 대량 데이터를 효율적으로 삽입할 수 있습니다.
아래 예제를 통해 실제 사용 방법을 살펴보겠습니다.
1. Bulk 연산 초기화 및 문서 삽입
먼저 initializeUnorderedBulkOp()로 bulk 연산 객체를 생성한 후, insert() 메서드로 문서들을 추가하고 execute()로 실행합니다.
> var bulkInsertDoc = db.demo663.initializeUnorderedBulkOp();
> bulkInsertDoc.insert( { Name: "John", CountryName: "US" } );
> bulkInsertDoc.insert( { Name: "Chris", CountryName: "UK" } );
> bulkInsertDoc.insert( { Name: "David", CountryName: "AUS" } );
> bulkInsertDoc.execute();
2. 실행 결과 확인
execute()가 실행되면 다음과 같은 BulkWriteResult가 반환됩니다. 이 결과에는 삽입된 문서 수(nInserted) 등 각종 통계 정보가 포함되어 있습니다.
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})위 결과에서 nInserted: 3은 총 3개의 문서가 성공적으로 삽입되었음을 의미합니다.
3. find()로 삽입된 문서 조회
find() 메서드를 사용하여 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo663.find();
실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{ "_id" : ObjectId("5ea1b41424113ea5458c7d05"), "Name" : "John", "CountryName" : "US" }
{ "_id" : ObjectId("5ea1b41424113ea5458c7d06"), "Name" : "Chris", "CountryName" : "UK" }
{ "_id" : ObjectId("5ea1b41424113ea5458c7d07"), "Name" : "David", "CountryName" : "AUS" }정리
MongoDB에서 대량 삽입을 수행하는 절차는 다음과 같습니다.
initializeUnorderedBulkOp()로 bulk 연산 객체 생성insert()메서드로 삽입할 문서 추가execute()로 일괄 실행 및 결과 확인
순서가 중요하지 않은 경우 unordered bulk 연산을 사용하면 성능상 이점을 얻을 수 있으며, 순서가 보장되어야 한다면 initializeOrderedBulkOp()를 사용하면 됩니다.