Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

대량 작업

이 가이드 에서는 Node.js 운전자 사용하여 대량 작업을 수행하는 방법을 학습 수 있습니다. 대량 작업은 서버 에 대한 호출 수를 줄이는 데 도움이 됩니다. 각 작업에 대한 요청 보내는 대신 하나의 조치 내에서 여러 작업을 수행할 수 있습니다.

대량 작업에 대해 자세히 학습 MongoDB Server 매뉴얼에서 대량 쓰기 작업을 참조하세요.

대량 작업을 사용하여 컬렉션 에 대해 여러 쓰기 (write) 작업을 수행할 수 있습니다. 클라이언트 에서 대량 작업을 실행 여러 네임스페이스에 걸쳐 대량 쓰기를 수행할 수도 있습니다. MongoDB 에서 네임스페이스 <database>.<collection> 형식의 데이터베이스 이름과 컬렉션 이름으로 구성됩니다.

이 가이드에는 다음 섹션이 포함되어 있습니다.

  • 대량 삽입 작업 에서는 컬렉션 또는 클라이언트에서 대량 삽입 작업을 수행하는 방법을 설명합니다.

  • 대량 바꾸기 작업 에서는 컬렉션 또는 클라이언트에서 대량 바꾸기 작업을 수행하는 방법을 설명합니다.

  • 대량 업데이트 작업 에서는 컬렉션 또는 클라이언트에서 대량 업데이트 작업을 수행하는 방법을 설명합니다.

  • 대량 삭제 작업 에서는 컬렉션 또는 클라이언트에서 대량 삭제 작업을 수행하는 방법을 설명합니다.

  • 반환 유형은 대량 쓰기 (write) 작업의 결과로 생성되는 반환 객체 설명합니다.

  • 예외 처리에서는 대량 쓰기 (write) 작업의 작업이 실패할 경우 발생하는 예외에 대해 설명합니다.

  • 추가 정보 에서는 이 가이드 에 언급된 유형 및 메서드에 대한 리소스 및 API 문서 링크를 제공합니다.

중요

서버 및 드라이버 버전 요구 사항

컬렉션 수준 대량 쓰기 (write) 작업에는 다음 버전이 필요합니다.

  • MongoDB Server 버전 3.2 이상

  • Node.js 운전자 버전 3.6 이상

클라이언트 수준 대량 쓰기 (write) 작업에는 다음 버전이 필요합니다.

  • MongoDB Server 버전 8.0 이상

  • Node.js 운전자 버전 6.10 이상

이 가이드 의 예제에서는 Atlas 샘플 데이터 세트에 포함된 sample_mflix 데이터베이스 의 moviesusers 컬렉션을 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB 시작하기 가이드를 참조하세요.

대량 삽입 작업을 수행하려면 삽입하려는 각 문서 에 대해 대량 작업 모델을 만듭니다. 그런 다음 이러한 모델 목록을 bulkWrite() 메서드에 전달합니다.

이 섹션에서는 다음 유형의 대량 작업을 수행하는 방법에 대해 설명합니다.

컬렉션 에서 대량 삽입 작업을 수행하려면 각 작업에 대해 InsertOneModel 을 만듭니다. 그런 다음 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다. InsertOneModel를 만들려면 모델의 document 필드 지정하고 삽입하려는 문서 로 설정하다 .

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 InsertOneModel 인스턴스 두 개를 지정합니다. 각 InsertOneModelsample_mflix 데이터베이스 의 movies 컬렉션 에 삽입할 문서 나타냅니다.

  2. movies 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 삽입된 문서 수를 인쇄합니다.

const insertModels = [{
insertOne: {
document: {
title: "The Favourite",
year: 2018,
rated: "R",
released: "2018-12-21"
}
}
}, {
insertOne: {
document: {
title: "I, Tonya",
year: 2017,
rated: "R",
released: "2017-12-08"
}
}
}];
const insertResult = await movies.bulkWrite(insertModels);
console.log(`Inserted documents: ${insertResult.insertedCount}`);
Inserted documents: 2

여러 컬렉션 또는 데이터베이스에 걸쳐 대량 삽입 작업을 수행하려면 각 작업에 대해 ClientBulkWriteModel 을 만듭니다. 그런 다음 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

다음 표에서는 삽입 작업을 지정하기 위해 ClientBulkWriteModel 에 설정하다 수 있는 필드에 대해 설명합니다.

필드
설명

namespace

문서 삽입할 네임스페이스 입니다.
유형: String

name

수행하려는 작업입니다. 삽입 작업의 경우 이 필드 "insertOne" 로 설정하다 .
유형: String

document

삽입할 문서 .
유형: Document

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 있는 세 개의 ClientBulkWriteModel 인스턴스를 지정합니다. 처음 두 모델은 movies 컬렉션 에 삽입할 문서를 나타내고, 마지막 모델은 users 컬렉션 에 삽입할 문서 나타냅니다.

  2. 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 삽입된 문서 수를 인쇄합니다.

const clientInserts = [{
namespace: "sample_mflix.movies",
name: "insertOne",
document: {
title: "The Favourite",
year: 2018,
rated: "R",
released: "2018-12-21"
}
}, {
namespace: "sample_mflix.movies",
name: "insertOne",
document: {
title: "I, Tonya",
year: 2017,
rated: "R",
released: "2017-12-08"
}
}, {
namespace: "sample_mflix.users",
name: "insertOne",
document: {
name: "Brian Schwartz",
email: "bschwartz@example.com"
}
}];
const clientInsertRes = await client.bulkWrite(clientInserts);
console.log(`Inserted documents: ${clientInsertRes.insertedCount}`);
Inserted documents: 3

대량 교체 작업을 수행하려면 교체하려는 각 문서 에 대해 대량 작업 모델을 만듭니다. 그런 다음 이러한 모델 목록을 bulkWrite() 메서드에 전달합니다.

이 섹션에서는 다음 유형의 대량 작업을 수행하는 방법에 대해 설명합니다.

컬렉션 에서 대량 바꾸기 작업을 수행하려면 각 작업에 대해 ReplaceOneModel 을 만듭니다. 그런 다음 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

다음 표에서는 ReplaceOneModel에서 설정하다 수 있는 필드에 대해 설명합니다.

필드
설명

filter

교체하려는 문서 와 일치하는 필터하다 입니다.
유형: Document

replacement

대체 문서.
유형: Document

collation

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요.
유형: String 또는 Object

hint

(선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요.
유형: Bson

upsert

(선택 사항) 필터하다 와 일치하는 문서 없는 경우 새 문서 생성할지 여부를 지정합니다. 기본값
으로 이 필드 로 설정하다 false 됩니다.
유형: Boolean

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 ReplaceOneModel 인스턴스 두 개를 지정합니다. ReplaceOneModel 인스턴스에는 movies 컬렉션 의 영화를 나타내는 문서를 대체하는 지침이 포함되어 있습니다.

  2. movies 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 수정된 문서 수를 인쇄합니다.

const replaceOperations = [{
replaceOne: {
filter: {
title: "The Dark Knight"
},
replacement: {
title: "The Dark Knight Rises",
year: 2012,
rating: "PG-13"
},
upsert: false
}
}, {
replaceOne: {
filter: {
title: "Inception"
},
replacement: {
title: "Inception Reloaded",
year: 2010,
rating: "PG-13"
},
upsert: false
}
}];
const replaceResult = await movies.bulkWrite(replaceOperations);
console.log(`Modified documents: ${replaceResult.modifiedCount}`);
Modified documents: 2

여러 컬렉션 또는 데이터베이스에서 대량 바꾸기 작업을 수행하려면 각 작업에 대해 ClientBulkWriteModel 을 만듭니다. 그런 다음 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

다음 표에서는 대체 작업을 지정하기 위해 ClientBulkWriteModel 에 설정하다 수 있는 필드에 대해 설명합니다.

필드
설명

namespace

문서 대체할 네임스페이스 입니다.
유형: String

name

수행하려는 작업입니다. 바꾸기 작업의 경우 이 필드 "replaceOne" 로 설정하다 .
유형: String

filter

교체하려는 문서 와 일치하는 필터하다 입니다.
유형: Document

replacement

대체 문서.
유형: Document

collation

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요.
유형: String 또는 Object

hint

(선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요.
유형: Bson

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 있는 세 개의 ClientBulkWriteModel 인스턴스를 지정합니다. 처음 두 모델에는 movies 컬렉션 에 있는 문서에 대한 교체 지침이 포함되어 있고, 마지막 모델에는 users 컬렉션 에 있는 문서 에 대한 교체 지침이 포함되어 있습니다.

  2. 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 수정된 문서 수를 인쇄합니다.

const clientReplacements = [{
namespace: "sample_mflix.movies",
name: "replaceOne",
filter: {
title: "The Dark Knight"
},
replacement: {
title: "The Dark Knight Rises",
year: 2012,
rating: "PG-13"
}
}, {
namespace: "sample_mflix.movies",
name: "replaceOne",
filter: {
title: "Inception"
},
replacement: {
title: "Inception Reloaded",
year: 2010,
rating: "PG-13"
}
}, {
namespace: "sample_mflix.users",
name: "replaceOne",
filter: {
name: "April Cole"
},
replacement: {
name: "April Franklin",
email: "aprilfrank@example.com"
}
}];
const clientReplaceRes = await client.bulkWrite(clientReplacements);
console.log(`Modified documents: ${clientReplaceRes.modifiedCount}`);
Modified documents: 3

대량 업데이트 작업을 수행하려면 수행하려는 각 업데이트 에 대한 대량 작업 모델을 생성합니다. 그런 다음 이러한 모델 목록을 bulkWrite() 메서드에 전달합니다.

이 섹션에서는 다음 유형의 대량 작업을 수행하는 방법에 대해 설명합니다.

컬렉션 에서 일괄 업데이트 작업을 수행하려면 각 작업에 대해 UpdateOneModel 또는 UpdateManyModel 를 만듭니다. 그런 다음 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다. UpdateOneModel 은 필터하다 와 일치하는 하나 문서 만 업데이트하고 UpdateManyModel 는 필터하다 와 일치하는 모든 문서를 업데이트합니다.

다음 표에서는 UpdateOneModel 또는 UpdateManyModel에서 설정하다 수 있는 필드에 대해 설명합니다.

필드
설명

filter

업데이트 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 에 지정하면 UpdateOneModel 첫 번째 일치하는 문서 만 업데이트됩니다. 에 지정하면 UpdateManyModel 일치하는 모든 문서가 업데이트됩니다.
유형: Document

update

수행할 업데이트 입니다.
유형: Document

arrayFilters

(선택 사항) 배열 값 필드 업데이트하는 경우 업데이트 적용되는 배열 요소를 지정하는 필터 설정하다 입니다.
유형: Array

collation

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요.
유형: Object

hint

(선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요.
유형: String or Object

upsert

(선택 사항) 필터하다 와 일치하는 문서 없는 경우 새 문서 생성할지 여부를 지정합니다. 기본값 으로 이 필드 로 설정하다 false 됩니다.
유형: Boolean

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 UpdateOneModelUpdateManyModel 인스턴스 지정합니다. 이러한 모델에는 movies 컬렉션 의 영화를 나타내는 문서를 업데이트 위한 지침이 포함되어 있습니다.

  2. movies 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 수정된 문서 수를 인쇄합니다.

const updateOperations = [{
updateOne: {
filter: {
title: "Interstellar"
},
update: {
$set: {
title: "Interstellar Updated",
genre: "Sci-Fi Adventure"
}
},
upsert: true
}
}, {
updateMany: {
filter: {
rated: "PG-13"
},
update: {
$set: {
rated: "PG-13 Updated",
genre: "Updated Genre"
}
}
}
}];
const updateResult = await movies.bulkWrite(updateOperations);
console.log(`Modified documents: ${updateResult.modifiedCount}`);
Modified documents: 2320

여러 컬렉션 또는 데이터베이스에서 일괄 업데이트 작업을 수행하려면 각 작업에 대해 ClientBulkWriteModel 을 만듭니다. 그런 다음 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

다음 표에서는 ClientBulkWriteModel 에 설정하다 업데이트 작업을 지정할 수 있는 필드에 대해 설명합니다.

필드
설명

namespace

문서 업데이트 할 네임스페이스 입니다.
유형: String

name

수행하려는 작업입니다. 업데이트 작업의 경우 이 필드 또는 로 설정하다 "updateOne" "updateMany".
유형: String

filter

업데이트 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 모델 name "updateOne"을(를)(으)로 설정하다 첫 번째로 일치하는 문서 만 업데이트됩니다.name 를 로 "updateMany" 설정하다 하면 일치하는 모든 문서가 업데이트됩니다.
유형: Document

update

수행할 업데이트입니다.
유형: Document 또는 Document[]

arrayFilters

(선택 사항) 배열 값 필드 업데이트하는 경우 업데이트 적용되는 배열 요소를 지정하는 필터 설정하다 입니다.
유형: Document[]

collation

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요.
유형: Document

hint

(선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요.
유형: Document 또는 String

upsert

(선택 사항) 필터하다 와 일치하는 문서 없는 경우 새 문서 생성할지 여부를 지정합니다. 기본값 으로 이 필드 로 설정하다 false 됩니다.
유형: Boolean

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 ClientBulkWriteModel 인스턴스 두 개를 지정합니다. 첫 번째 모델은 movies 컬렉션 에 대해 하나의 업데이트 작업을 지정하고, 두 번째 모델은 users 컬렉션 에 대해 하나의 업데이트 작업을 지정합니다.

  2. 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 수정된 문서 수를 인쇄합니다.

const clientUpdates = [{
namespace: "sample_mflix.movies",
name: "updateMany",
filter: {
rated: "PG-13"
},
update: {
$set: {
rated: "PG-13 Updated",
genre: "Updated Genre"
}
},
upsert: false
}, {
namespace: "sample_mflix.users",
name: "updateOne",
filter: {
name: "Jon Snow"
},
update: {
$set: {
name: "Aegon Targaryen",
email: "targaryen@example.com"
}
},
upsert: false
}];
const clientUpdateRes = await client.bulkWrite(clientUpdates);
console.log(`Modified documents: ${clientUpdateRes.modifiedCount}`);
Modified documents: 2320

대량 삭제 작업을 수행하려면 각 삭제 작업에 대한 대량 작업 모델을 만듭니다. 그런 다음 이러한 모델 목록을 bulkWrite() 메서드에 전달합니다.

이 섹션에서는 다음 유형의 대량 작업을 수행하는 방법에 대해 설명합니다.

컬렉션 에서 일괄 삭제 작업을 수행하려면 각 작업에 대해 DeleteOneModel 또는 DeleteManyModel 를 만듭니다. 그런 다음 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다. DeleteOneModel 은 필터하다 와 일치하는 문서 하나만 삭제하고 DeleteManyModel 는 필터하다 와 일치하는 모든 문서를 삭제합니다.

다음 표에서는 DeleteOneModel 또는 DeleteManyModel에서 설정하다 수 있는 필드에 대해 설명합니다.

필드
설명

filter

삭제 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 에 지정하면 DeleteOneModel 일치하는 첫 번째 문서 만 삭제됩니다. 에 지정하면 DeleteManyModel 일치하는 모든 문서가 삭제됩니다.
유형: Document

collation

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요.
유형: Object

hint

(선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요.
유형: String or Object

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 DeleteOneModelDeleteManyModel 인스턴스 를 지정합니다. 이러한 모델에는 movies 컬렉션 에서 문서를 삭제 하는 지침이 포함되어 있습니다.

  2. movies 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 삭제된 문서 수를 인쇄합니다.

const deleteOperations = [{
deleteOne: {
filter: {
title: "Dunkirk"
}
}
}, {
deleteMany: {
filter: {
rated: "R"
}
}
}];
const deleteResult = await movies.bulkWrite(deleteOperations);
console.log(`Deleted documents: ${deleteResult.deletedCount}`);
Deleted documents: 5538

여러 컬렉션 또는 데이터베이스에서 일괄 삭제 작업을 수행하려면 각 작업에 대해 ClientBulkWriteModel 을 만듭니다. 그런 다음 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

다음 표에서는 삭제 작업을 지정하기 위해 ClientBulkWriteModel 에 설정하다 수 있는 필드에 대해 설명합니다.

필드
설명

namespace

문서 삭제 네임스페이스 입니다.
유형: String

name

수행하려는 작업입니다. 삭제 작업의 경우 이 필드 또는 로 설정하다 "deleteOne" "deleteMany".
유형: String

filter

삭제 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 모델 name 를 로 설정하다 "deleteOne" 하면 일치하는 첫 번째 문서 만 삭제됩니다.name 를 로 "deleteMany" 설정하다 하면 일치하는 모든 문서가 삭제됩니다.
유형: Document

hint

(선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요.
유형: Document 또는 String

collation

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요.
유형: Document

이 예에서는 다음 조치를 수행합니다.

  1. 배열 에 ClientBulkWriteModel 인스턴스 두 개를 지정합니다. 첫 번째 모델은 movies 컬렉션 에 대해 하나의 삭제 작업을 지정하고, 두 번째 모델은 users 컬렉션 에 대해 하나의 삭제 작업을 지정합니다.

  2. 클라이언트 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다.

  3. 수정된 문서 수를 인쇄합니다.

const clientDeletes = [{
namespace: "sample_mflix.movies",
name: "deleteMany",
filter: {
rated: "R"
}
}, {
namespace: "sample_mflix.users",
name: "deleteOne",
filter: {
email: "emilia_clarke@gameofthron.es"
}
}];
const clientDeleteRes = await client.bulkWrite(clientDeletes);
console.log(`Deleted documents: ${clientDeleteRes.deletedCount}`);
Deleted documents: 5538

Collection.bulkWrite() 메서드는 대량 작업에 대한 정보를 제공하는 BulkWriteResult 객체 반환합니다.

다음 표에서는 BulkWriteResult 객체 의 필드에 대해 설명합니다.

필드
설명

insertedCount

삽입된 문서 수

matchedCount

일치하는 문서 수

modifiedCount

업데이트된 문서 수

upsertedCount

업서트된 문서 수

deletedCount

삭제된 문서 수

MongoClient.bulkWrite() 메서드는 클라이언트 대량 쓰기 (write) 작업에 대한 정보가 포함된 ClientBulkWriteResult 객체 반환합니다.

다음 표에서는 ClientBulkWriteResult 객체 의 필드에 대해 설명합니다.

필드
설명

acknowledged

대량 쓰기 (write) 승인되었는지 여부를 나타내는 부울 값

insertedCount

삽입된 문서 수

matchedCount

일치하는 문서 수

modifiedCount

업데이트된 문서 수

upsertedCount

업서트된 문서 수

deletedCount

삭제된 문서 수

insertResults

성공적인 각 개별 삽입 작업의 결과

updateResults

성공적인 각 개별 업데이트 작업의 결과

deleteResults

각 개별 성공적인 삭제 작업의 결과

컬렉션 에서 호출된 대량 쓰기 (write) 작업이 실패하면 Node.js 운전자 MongoBulkWriteError 을 발생시키고 ordered 옵션이 true로 설정하다 경우 추가 작업을 수행하지 않습니다. ordered 을(를) false(으)로 설정하다 하면 후속 작업을 계속 시도합니다.

순서가 지정된 대량 작업과 순서가 지정되지 않은 대량 작업에 대해 자세히 학습 MongoDB Server 매뉴얼의 대량 쓰기 가이드 에서 순서가 지정된 작업과 순서가 지정되지 않은 작업 섹션을 참조하세요.

MongoBulkWriteError 객체 에는 다음과 같은 속성이 포함되어 있습니다.

속성
설명

message

오류 메시지입니다.
유형: String

writeErrors

대량 쓰기 (write) 작업 중에 발생한 오류의 배열 입니다.
유형: BulkWriteError[]

writeConcernErrors

대량 쓰기 (write) 작업을 실행하는 동안 발생한 쓰기 고려 오류입니다.
유형: WriteConnectionError[]

result

예외가 발생하기 전에 성공적인 으로 수행된 작업의 결과입니다.
유형: BulkWriteResult[]

err

기본 오류 객체, 더 많은 세부 정보를 포함할 수 있습니다.
유형: Error

클라이언트 에서 호출된 대량 쓰기 (write) 작업이 실패하면 Node.js 운전자 MongoClientBulkWriteError를 생성합니다. 기본값 으로 운전자 오류 발생 후 후속 작업을 수행하지 않습니다. ordered 옵션을 bulkWrite() 메서드에 전달하고 false로 설정하다 운전자 나머지 작업을 계속 시도합니다.

MongoClientBulkWriteError 객체 에는 다음과 같은 속성이 포함되어 있습니다.

속성
설명

writeConcernErrors

각 쓰기 고려 (write concern) 오류를 지정하는 문서 배열 입니다.
유형: Document[]

writeErrors

개별 쓰기 (write) 작업 중에 발생한 오류의 맵입니다.
유형: Map<number, ClientBulkWriteError>

partialResult

오류가 발생하기 전의 작업 진행 상황을 반영하는 클라이언트 대량 쓰기 (write) 의 부분 결과입니다.
유형: ClientBulkWriteResult

참고

설정 예시

이 예시 연결 URI를 사용하여 MongoDB 인스턴스 에 연결합니다. MongoDB 인스턴스에 연결하는 방법에 대해 자세히 학습하려면 MongoDB 에 연결 가이드를 참조하세요. 이 예시 Atlas 샘플 데이터 세트에 포함된 sample_mflix 데이터베이스movies 컬렉션도 사용합니다. MongoDB 시작하기단계에 따라 MongoDB Atlas 의 프리 티어 에서 데이터베이스 에 로드할 수 있습니다.

다음 코드는 sample_mflix 데이터베이스 의 theaters 컬렉션 에 대해 대량 쓰기 (write) 작업을 수행하는 완전한 독립형 파일 입니다. operations 매개변수에는 insertOne, updateManydeleteOne 쓰기 (write) 작업의 예가 포함되어 있습니다.

1// Bulk write operation
2
3// Import MongoClient from the MongoDB node driver package
4const { MongoClient } = require("mongodb");
5
6// Replace the uri string with your MongoDB deployment's connection string
7const uri = "<connection string uri>";
8
9const client = new MongoClient(uri);
10
11async function run() {
12 try {
13 const database = client.db("sample_mflix");
14 const theaters = database.collection("theaters");
15
16 // Insert a new document into the "theaters" collection
17 const result = await theaters.bulkWrite([
18 {
19 insertOne: {
20 document: {
21 location: {
22 address: {
23 street1: "3 Main St.",
24 city: "Anchorage",
25 state: "AK",
26 zipcode: "99501",
27 },
28 },
29 },
30 },
31 },
32 {
33 insertOne: {
34 document: {
35 location: {
36 address: {
37 street1: "75 Penn Plaza",
38 city: "New York",
39 state: "NY",
40 zipcode: "10001",
41 },
42 },
43 },
44 },
45 },
46 {
47 // Update documents that match the specified filter
48 updateMany: {
49 filter: { "location.address.zipcode": "44011" },
50 update: { $set: { is_in_ohio: true } },
51 upsert: true,
52 },
53 },
54 {
55 // Delete a document that matches the specified filter
56 deleteOne: { filter: { "location.address.street1": "221b Baker St" } },
57 },
58 ]);
59 // Log the result of the bulk write operation
60 console.log(result);
61 } finally {
62 // Close the database connection when the operations are completed or if an error occurs
63 await client.close();
64 }
65}
66run().catch(console.dir);
1import { MongoClient } from "mongodb";
2
3// Replace the uri string with your MongoDB deployment's connection string.
4const uri = "<connection string uri>";
5
6const client = new MongoClient(uri);
7
8interface Address {
9 street1: string;
10 city: string;
11 state: string;
12 zipcode: string;
13}
14
15interface Theater {
16 location: { address: Address };
17 is_in_ohio?: boolean;
18}
19
20async function run() {
21 try {
22 const database = client.db("sample_mflix");
23 const theaters = database.collection<Theater>("theaters");
24
25 const result = await theaters.bulkWrite([
26 {
27 insertOne: {
28 document: {
29 location: {
30 address: {
31 street1: "3 Main St.",
32 city: "Anchorage",
33 state: "AK",
34 zipcode: "99501",
35 },
36 },
37 },
38 },
39 },
40 {
41 insertOne: {
42 document: {
43 location: {
44 address: {
45 street1: "75 Penn Plaza",
46 city: "New York",
47 state: "NY",
48 zipcode: "10001",
49 },
50 },
51 },
52 },
53 },
54 {
55 updateMany: {
56 // Important: You lose type safety when you use dot notation in queries
57 filter: { "location.address.zipcode": "44011" },
58 update: { $set: { is_in_ohio: true } },
59 upsert: true,
60 },
61 },
62 {
63 deleteOne: {
64 filter: { "location.address.street1": "221b Baker St" },
65 },
66 },
67 ]);
68
69 console.log(result);
70 } finally {
71 await client.close();
72 }
73}
74run().catch(console.dir);

앞의 예시를 실행하면 다음과 같은 결과가 출력됩니다.

BulkWriteResult {
insertedCount: 2,
matchedCount: 1,
modifiedCount: 1,
deletedCount: 0,
upsertedCount: 0,
upsertedIds: {},
insertedIds: {
'0': new ObjectId("..."),
'1': new ObjectId("...")
}
}

대량 작업에 대해 자세히 학습 MongoDB Server 매뉴얼에서 대량 쓰기 작업을 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.