정의
Mongo.bulkWrite() 단일 컬렉션 에서 작동하는 와 달리, 한 번의 호출로 여러 데이터베이스와 컬렉션에 걸쳐 여러 쓰기 (write) 작업을 수행합니다.db.collection.bulkWrite()
참고
MongoDB 8.0 이상이 필요합니다.
구문
다음 구문을 사용하여 현재 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 가 자동으로 필드를 생성합니다.
1개 업데이트 및 다수 업데이트
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 | 업서트된 문서 수입니다. |
| 문서에 정수 매핑 | 선택 사항. 성공적인 각 삽입 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드 포함됩니다.
|
| 문서에 정수 매핑 | 선택 사항. 성공적인 각 업데이트 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드가 포함됩니다.
|
| 문서에 정수 매핑 | 선택 사항. 성공적인 각 삭제 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드 포함됩니다.
|
예시
이 예시 를 사용하여 sample_mflix Mongo.bulkWrite()데이터베이스 에서 다음 작업을 순서대로 수행합니다.
users컬렉션 에 문서 삽입합니다.theaters컬렉션 의 문서 업데이트합니다.users컬렉션 에 다른 문서 삽입합니다.
db.getMongo().bulkWrite( [ { namespace: 'sample_mflix.users', name: 'insertOne', document: { name: 'Cersei Lannister', email: 'cersei.l@example.com', password: '$2b$12$UREFwsRUoyF0CRqGNK0LzO0HM/jLhgUCNNIJ9RJAqMUQ74crlJ1Vu' } }, { namespace: 'sample_mflix.theaters', name: 'updateOne', filter: { theaterId: 1000 }, update: { $set: { "location.address.street1": "350 W Market", "location.address.city": "Bloomington" } } }, { namespace: 'sample_mflix.users', name: 'insertOne', document: { name: 'Sansa Stark', email: 'sansa.s@example.com', password: '$2b$12$UREFwsRUoyF0CRqGNK0LzO0HM/jLhgUCNNIJ9RJAqMUQ74crlJ1Vu' } } ], { ordered: true, bypassDocumentValidation: true, verboseResults: true } )
mongosh 대량 쓰기 (write) 순서대로 수행하고 다음 문서 반환합니다.
{ acknowledged: true, insertedCount: 2, matchedCount: 1, modifiedCount: 1, deletedCount: 0, upsertedCount: 0, insertResults: Map(2) { 0 => { insertedId: "..." }, 2 => { insertedId: "..." } }, updateResults: Map(1) { 1 => { matchedCount: 1, modifiedCount: 1, didUpsert: false } }, deleteResults: Map(0) {} }