정의
Mongo.bulkWrite() 단일 컬렉션에서 작동하는 db.collection.bulkWrite() 와 달리, 한 번의 호출로 여러 데이터베이스와 컬렉션에 걸쳐 여러 쓰기 (write) 작업을 수행합니다.
참고
MongoDB 8.0 이상이 필요합니다.
다중 문서 트랜잭션에서 bulkWrite() 을(를) 사용하려면 Session.bulkWrite()을(를) 호출합니다. 이것은 Mongo.bulkWrite() 와(과) 동일한 매개 변수를 허용하고 작업을 세션과 연결합니다.
구문
다음 구문을 사용하여 현재 Mongo() 인스턴스에서 bulkWrite() 를 호출할 수 있습니다.
db.getMongo().bulkWrite( [ { namespace: "<db1.collection1>", name: "insertOne", document: { ... } }, { namespace: "<db2.collection2>", name: "replaceOne", filter: { ... } } ], { ordered: boolean, verboseResults: boolean, bypassDocumentValidation: boolean, let: Document } )
다음 예시 와 같이 다른 Mongo 인스턴스 에서 호출할 수도 있습니다.
const otherMongo = Mongo("<other connection string>"); otherMongo.bulkWrite([{ namespace: "<db.collection>", ... }]);
bulkWrite() 두 개의 매개변수를 허용합니다:
Parameter | 유형 | 설명 |
|---|---|---|
| 문서 배열 | 쓰기 (write) 작업의 배열 을 정의합니다. 배열 의 각 문서 실행하려는 쓰기 (write) 작업을 나타냅니다. |
| 문서 | 작업에 대한 옵션 을 정의합니다. |
operations 의 문서 는 다음 6가지 작업 중 하나를 나타낼 수 있습니다.
insertOne
replaceOne
UpdateOne
업데이트
deleteOne
deleteMany
다음 섹션에서는 각 작업을 나타내는 문서에 사용해야 하는 구문에 대해 설명합니다.
insertOne
{ namespace: '<db.collection>', name: 'insertOne', document: Document }
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 삽입 작업을 위한 데이터베이스 및 컬렉션. |
| 문자열 | 작업 이름입니다. |
| 문서 | 삽입할 문서입니다. |
참고
문서 _id 필드 포함되어 있지 않으면 mongosh 가 자동으로 필드를 생성합니다.
updateOne 및 updateMany
updateOne 필터와 일치하는 첫 번째 문서 업데이트합니다. updateMany 필터와 일치하는 모든 문서를 업데이트합니다.
{ namespace: '<db>.<collection>', name: 'updateOne' | 'updateMany', filter: Document, update: Document | Document[], arrayFilters?: Document[], hint?: Document | string, collation?: Document, upsert?: boolean }
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 업데이트 작업을 위한 데이터베이스 및 컬렉션. |
| 문자열 | 작업 이름입니다. |
| 문서 | 업데이트 하려는 하나 이상의 문서와 일치하는 필터하다 입니다. |
| 문서 또는 문서 배열 | 수행할 업데이트 입니다. |
| 문서 배열 | 선택 사항. 배열 값 필드 업데이트 경우 업데이트 배열 요소를 지정하는 필터입니다. |
| 문서 또는 문자열 | 선택 사항. 작업에 사용할 인덱스 입니다. |
| 문서 | (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬 입니다. |
| 부울 | 선택 사항. |
replaceOne
{ namespace: '<db>.<collection>', name: 'replaceOne', filter: Document, replacement: Document, hint?: Document | string, collation?: Document }
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 바꾸기 작업을 위한 데이터베이스 및 컬렉션. |
| 문자열 | 작업 이름입니다. |
| 문서 | 업데이트 하려는 문서 와 일치하는 필터하다 입니다. |
| 문서 | 대체 문서입니다. |
| 문서 또는 문자열 | 선택 사항. 작업에 사용할 인덱스 입니다. |
| 문서 | (선택 사항) 결과를 정렬할 때 사용할 데이터 정렬 입니다. |
하나 또는 다수 삭제
deleteOne 필터와(과) 일치하는 첫 번째 문서 삭제합니다. deleteMany 은 필터와 일치하는 모든 문서를 삭제합니다.
{ namespace: '<db>.<collection>', name: 'deleteOne' | 'deleteMany', filter: Document, hint?: Document | string, collation?: Document }
필드 | 유형 | 설명 |
|---|---|---|
| 문자열 | 삭제 작업을 위한 데이터베이스 및 컬렉션 . |
| 문자열 | 작업 이름입니다. |
| 문서 | 삭제 문서를 일치시키는 쿼리 선택기 입니다. |
| 문서 또는 문자열 | 선택 사항. 작업에 사용할 인덱스 입니다. |
| 문서 | 선택 사항. 작업에 사용할 데이터 정렬입니다. |
옵션
{ ordered?: boolean, verboseResults?: boolean, bypassDocumentValidation?: boolean, let?: Document }
필드 | 유형 | 설명 |
|---|---|---|
| 부울 | (선택 사항) MongoDB 사용자가 제공하는 문서 순서대로 대량 쓰기 (write) 수행함을 나타냅니다. |
| 부울 | (선택 사항) |
| 부울 | (선택 사항) 쓰기 (write) 작업이 문서 유효성 검사 규칙을 우회할지 여부를 지정합니다. 기본값은 |
| 문서 | (선택 사항) 집계 변수를사용하여 액세스 할 수 있는 매개변수 이름 및 값에 대한 문서입니다. |
출력
bulkWrite() 다음 필드가 있는 객체 반환합니다.
{ acknowledged: boolean, insertedCount: int, matchedCount: int, modifiedCount: int, deletedCount: int, upsertedCount: int, insertResults?: map(int, document), updateResults?: map(int, document), deleteResults?: map(int, document) }
필드 | 유형 | 설명 |
|---|---|---|
| 부울 |
|
| integer | 삽입된 문서 수입니다. |
| integer | 필터하다 와 일치하는 문서 수입니다. |
| integer | 수정된 문서 수입니다. |
| integer | 삭제된 문서 수입니다. |
| integer | 업서트된 문서 수입니다. |
| 문서에 정수 매핑 | 선택 사항. 성공적인 각 삽입 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드 포함됩니다.
|
| 문서에 정수 매핑 | 선택 사항. 성공적인 각 업데이트 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드가 포함됩니다.
|
| 문서에 정수 매핑 | 선택 사항. 성공적인 각 삭제 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드 포함됩니다.
|
예시
이 예시 Mongo.bulkWrite() 를 사용하여 다음 작업을 순서대로 수행합니다.
db.authors컬렉션 에 문서 삽입합니다.db.books컬렉션 에 문서 삽입합니다.이전 문서 업데이트합니다.
db.getMongo().bulkWrite( [ { namespace: 'db.authors', name: 'insertOne', document: { name: 'Stephen King' } }, { namespace: 'db.books', name: 'insertOne', document: { name: 'It' } }, { namespace: 'db.books', name: 'updateOne', filter: { name: 'It' }, update: { $set: { year: 1986 } } } ], { ordered: true, bypassDocumentValidation: true } )
mongosh 대량 쓰기 (write) 순서대로 수행하고 다음 문서 반환합니다.
{ acknowledged: true, insertedCount: 2, matchedCount: 1, modifiedCount: 1, deletedCount: 0, upsertedCount: 0, insertResults: { '1': { insertedId: ObjectId('67ed8ce8efd926c84cab7945') }, '2': { insertedId: ObjectId('67ed8ce8efd926c84cab7946') } } updateResults: { '1': { matchedCount: 1, modifiedCount: 1, didUpsert: false } } }