개요
이 가이드 에서는 Node.js 운전자 사용하여 대량 작업을 수행하는 방법을 학습 수 있습니다. 대량 작업은 서버 에 대한 호출 수를 줄이는 데 도움이 됩니다. 각 작업에 대한 요청 보내는 대신 하나의 조치 내에서 여러 작업을 수행할 수 있습니다.
대량 작업을 사용하여 컬렉션 에 대해 여러 쓰기 (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 데이터베이스 의 movies 및 users 컬렉션을 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB 시작하기 가이드를 참조하세요.
대량 삽입 작업
대량 삽입 작업을 수행하려면 삽입하려는 각 문서 에 대해 대량 작업 모델을 만듭니다. 그런 다음 이러한 모델 목록을 bulkWrite() 메서드에 전달합니다.
이 섹션에서는 다음 유형의 대량 작업을 수행하는 방법에 대해 설명합니다.
컬렉션 대량 삽입
컬렉션 에서 대량 삽입 작업을 수행하려면 각 작업에 대해 InsertOneModel 을 만듭니다. 그런 다음 컬렉션 에서 bulkWrite() 메서드를 호출하고 모델 배열 매개 변수로 전달합니다. InsertOneModel를 만들려면 모델의 document 필드 지정하고 삽입하려는 문서 로 설정하다 .
예시
이 예에서는 다음 조치를 수행합니다.
배열 에
InsertOneModel인스턴스 두 개를 지정합니다. 각InsertOneModel는sample_mflix데이터베이스 의movies컬렉션 에 삽입할 문서 나타냅니다.movies컬렉션 에서bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.삽입된 문서 수를 인쇄합니다.
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 에 설정하다 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 문서 삽입할 네임스페이스 입니다. |
| 수행하려는 작업입니다. 삽입 작업의 경우 이 필드 |
| 삽입할 문서 . |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에 있는 세 개의
ClientBulkWriteModel인스턴스를 지정합니다. 처음 두 모델은movies컬렉션 에 삽입할 문서를 나타내고, 마지막 모델은users컬렉션 에 삽입할 문서 나타냅니다.클라이언트 에서
bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.삽입된 문서 수를 인쇄합니다.
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에서 설정하다 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 교체하려는 문서 와 일치하는 필터하다 입니다. |
| 대체 문서. |
| (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요. |
| (선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요. |
| (선택 사항) 필터하다 와 일치하는 문서 없는 경우 새 문서 생성할지 여부를 지정합니다. 기본값 |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에
ReplaceOneModel인스턴스 두 개를 지정합니다.ReplaceOneModel인스턴스에는movies컬렉션 의 영화를 나타내는 문서를 대체하는 지침이 포함되어 있습니다.movies컬렉션 에서bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.수정된 문서 수를 인쇄합니다.
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 에 설정하다 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 문서 대체할 네임스페이스 입니다. |
| 수행하려는 작업입니다. 바꾸기 작업의 경우 이 필드 |
| 교체하려는 문서 와 일치하는 필터하다 입니다. |
| 대체 문서. |
| (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요. |
| (선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요. |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에 있는 세 개의
ClientBulkWriteModel인스턴스를 지정합니다. 처음 두 모델에는movies컬렉션 에 있는 문서에 대한 교체 지침이 포함되어 있고, 마지막 모델에는users컬렉션 에 있는 문서 에 대한 교체 지침이 포함되어 있습니다.클라이언트 에서
bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.수정된 문서 수를 인쇄합니다.
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에서 설정하다 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 업데이트 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 에 지정하면 |
| 수행할 업데이트 입니다. |
| (선택 사항) 배열 값 필드 업데이트하는 경우 업데이트 적용되는 배열 요소를 지정하는 필터 설정하다 입니다. |
| (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요. |
| (선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요. |
| (선택 사항) 필터하다 와 일치하는 문서 없는 경우 새 문서 생성할지 여부를 지정합니다. 기본값 으로 이 필드 로 설정하다 |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에
UpdateOneModel및UpdateManyModel인스턴스 지정합니다. 이러한 모델에는movies컬렉션 의 영화를 나타내는 문서를 업데이트 위한 지침이 포함되어 있습니다.movies컬렉션 에서bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.수정된 문서 수를 인쇄합니다.
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 에 설정하다 업데이트 작업을 지정할 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 문서 업데이트 할 네임스페이스 입니다. |
| 수행하려는 작업입니다. 업데이트 작업의 경우 이 필드 또는 로 설정하다 |
| 업데이트 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 모델 |
| 수행할 업데이트입니다. |
| (선택 사항) 배열 값 필드 업데이트하는 경우 업데이트 적용되는 배열 요소를 지정하는 필터 설정하다 입니다. |
| (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요. |
| (선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요. |
| (선택 사항) 필터하다 와 일치하는 문서 없는 경우 새 문서 생성할지 여부를 지정합니다. 기본값 으로 이 필드 로 설정하다 |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에
ClientBulkWriteModel인스턴스 두 개를 지정합니다. 첫 번째 모델은movies컬렉션 에 대해 하나의 업데이트 작업을 지정하고, 두 번째 모델은users컬렉션 에 대해 하나의 업데이트 작업을 지정합니다.클라이언트 에서
bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.수정된 문서 수를 인쇄합니다.
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에서 설정하다 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 삭제 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 에 지정하면 |
| (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요. |
| (선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요. |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에
DeleteOneModel및DeleteManyModel인스턴스 를 지정합니다. 이러한 모델에는movies컬렉션 에서 문서를 삭제 하는 지침이 포함되어 있습니다.movies컬렉션 에서bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.삭제된 문서 수를 인쇄합니다.
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 에 설정하다 수 있는 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 문서 삭제 네임스페이스 입니다. |
| 수행하려는 작업입니다. 삭제 작업의 경우 이 필드 또는 로 설정하다 |
| 삭제 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. 모델 |
| (선택 사항) 작업에 사용할 인덱스 입니다. 인덱스에 대해 자세히 학습 쿼리 최적화를 위한 인덱스 가이드 를 참조하세요. |
| (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬입니다. 데이터 정렬에 대해 자세히 학습 CRUD 작업 구성 가이드 의 데이터 정렬 섹션을 참조하세요. |
예시
이 예에서는 다음 조치를 수행합니다.
배열 에
ClientBulkWriteModel인스턴스 두 개를 지정합니다. 첫 번째 모델은movies컬렉션 에 대해 하나의 삭제 작업을 지정하고, 두 번째 모델은users컬렉션 에 대해 하나의 삭제 작업을 지정합니다.클라이언트 에서
bulkWrite()메서드를 호출하고 모델 배열 매개 변수로 전달합니다.수정된 문서 수를 인쇄합니다.
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
반환 유형
BulkWriteResult
Collection.bulkWrite() 메서드는 대량 작업에 대한 정보를 제공하는 BulkWriteResult 객체 반환합니다.
다음 표에서는 BulkWriteResult 객체 의 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 삽입된 문서 수 |
| 일치하는 문서 수 |
| 업데이트된 문서 수 |
| 업서트된 문서 수 |
| 삭제된 문서 수 |
ClientBulkWriteResult
MongoClient.bulkWrite() 메서드는 클라이언트 대량 쓰기 (write) 작업에 대한 정보가 포함된 ClientBulkWriteResult 객체 반환합니다.
다음 표에서는 ClientBulkWriteResult 객체 의 필드에 대해 설명합니다.
필드 | 설명 |
|---|---|
| 대량 쓰기 (write) 승인되었는지 여부를 나타내는 부울 값 |
| 삽입된 문서 수 |
| 일치하는 문서 수 |
| 업데이트된 문서 수 |
| 업서트된 문서 수 |
| 삭제된 문서 수 |
| 성공적인 각 개별 삽입 작업의 결과 |
| 성공적인 각 개별 업데이트 작업의 결과 |
| 각 개별 성공적인 삭제 작업의 결과 |
예외 처리
컬렉션 대량 쓰기 예외
컬렉션 에서 호출된 대량 쓰기 (write) 작업이 실패하면 Node.js 운전자 MongoBulkWriteError 을 발생시키고 ordered 옵션이 true로 설정하다 경우 추가 작업을 수행하지 않습니다. ordered 을(를) false(으)로 설정하다 하면 후속 작업을 계속 시도합니다.
팁
순서가 지정된 대량 작업과 순서가 지정되지 않은 대량 작업에 대해 자세히 학습 MongoDB Server 매뉴얼의 대량 쓰기 가이드 에서 순서가 지정된 작업과 순서가 지정되지 않은 작업 섹션을 참조하세요.
MongoBulkWriteError 객체 에는 다음과 같은 속성이 포함되어 있습니다.
속성 | 설명 |
|---|---|
| 오류 메시지입니다. |
| 대량 쓰기 (write) 작업 중에 발생한 오류의 배열 입니다. |
| 대량 쓰기 (write) 작업을 실행하는 동안 발생한 쓰기 고려 오류입니다. |
| 예외가 발생하기 전에 성공적인 으로 수행된 작업의 결과입니다. |
| 기본 오류 객체, 더 많은 세부 정보를 포함할 수 있습니다. |
클라이언트 대량 쓰기 예외
클라이언트 에서 호출된 대량 쓰기 (write) 작업이 실패하면 Node.js 운전자 MongoClientBulkWriteError를 생성합니다. 기본값 으로 운전자 오류 발생 후 후속 작업을 수행하지 않습니다. ordered 옵션을 bulkWrite() 메서드에 전달하고 false로 설정하다 운전자 나머지 작업을 계속 시도합니다.
MongoClientBulkWriteError 객체 에는 다음과 같은 속성이 포함되어 있습니다.
속성 | 설명 |
|---|---|
| 각 쓰기 고려 (write concern) 오류를 지정하는 문서 배열 입니다. |
| 개별 쓰기 (write) 작업 중에 발생한 오류의 맵입니다. |
| 오류가 발생하기 전의 작업 진행 상황을 반영하는 클라이언트 대량 쓰기 (write) 의 부분 결과입니다. |
bulkWrite() 예제: 전체 파일
참고
설정 예시
이 예시 연결 URI를 사용하여 MongoDB 인스턴스 에 연결합니다. MongoDB 인스턴스에 연결하는 방법에 대해 자세히 학습하려면 MongoDB 에 연결 가이드를 참조하세요. 이 예시 Atlas 샘플 데이터 세트에 포함된 sample_mflix 데이터베이스의 movies 컬렉션도 사용합니다. MongoDB 시작하기단계에 따라 MongoDB Atlas 의 프리 티어 에서 데이터베이스 에 로드할 수 있습니다.
다음 코드는 sample_mflix 데이터베이스 의 theaters 컬렉션 에 대해 대량 쓰기 (write) 작업을 수행하는 완전한 독립형 파일 입니다. operations 매개변수에는 insertOne, updateMany 및 deleteOne 쓰기 (write) 작업의 예가 포함되어 있습니다.
1 // Bulk write operation 2 3 // Import MongoClient from the MongoDB node driver package 4 const { MongoClient } = require("mongodb"); 5 6 // Replace the uri string with your MongoDB deployment's connection string 7 const uri = "<connection string uri>"; 8 9 const client = new MongoClient(uri); 10 11 async 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 } 66 run().catch(console.dir);
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 interface Address { 9 street1: string; 10 city: string; 11 state: string; 12 zipcode: string; 13 } 14 15 interface Theater { 16 location: { address: Address }; 17 is_in_ohio?: boolean; 18 } 19 20 async 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 } 74 run().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 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.