문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

Bulk.insert()

이 페이지의 내용

  • 설명
  • 행동
  • 예제

Bulk.insert(<document>)

대량 작업 목록에 삽입 작업을 추가합니다.

Bulk.insert() 는 다음 매개 변수를 허용합니다.

매개변수
유형
설명
doc
문서
삽입할 문서. 문서 크기는 최대 BSON 문서 크기보다 작거나 같아야 합니다.

삽입 중에 서버 오류가 발생하더라도 일부 문서가 삽입되었을 수 있습니다.

삽입에 성공하면 시스템에서 컬렉션에 삽입된 문서 수 BulkWriteResult.insertedCount를 반환합니다. 복제본 세트 상태 변경으로 인해 삽입 작업이 중단되면 시스템에서 문서 삽입을 계속할 수 있습니다. 따라서 BulkWriteResult.insertedCount는 실제 삽입된 문서보다 적은 수의 문서를 보고할 수 있습니다.

작업에서 인덱싱된 필드에 대량의 임의 데이터(예: 해시 인덱스)를 삽입하는 경우 삽입 성능이 저하될 수 있습니다. 무작위 데이터를 대량으로 삽입하면 무작위 인덱스 항목이 생성되어 인덱스 크기가 늘어납니다. 인덱스가 다른 인덱스 항목에 액세스하기 위해 각 무작위 삽입이 필요한 크기에 도달하면 삽입으로 인해 WiredTiger 캐시 제거 및 교체 비율이 높아집니다. 이 경우 인덱스가 더 이상 캐시에 완전히 저장되지 않고 디스크에서 업데이트되어 성능이 저하됩니다.

인덱싱된 필드에 무작위 데이터를 대량 삽입하는 성능을 개선하려면 다음 두 가지 방법을 사용할 수 있습니다.

  • 인덱스를 삭제한 다음 임의의 데이터를 삽입한 후 다시 생성합니다.

  • 데이터를 인덱싱되지 않은 빈 collection에 삽입합니다.

대량 삽입 후 인덱스를 생성하면 메모리의 데이터가 정렬되고 모든 인덱스에 대해 정렬된 삽입이 수행됩니다.

다음에서는 items 컬렉션의 Bulk() 작업 빌더를 초기화하고 여러 문서를 추가하기 위한 일련의 삽입 작업을 추가합니다.

var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } );
bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } );
bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } );
bulk.execute();

다음도 참조하세요.

← Bulk.getOperations()

이 페이지의 내용