Docs Menu
Docs Home
/ /

Mongo.bulkWrite() (mongosh 메서드)

Mongo.bulkWrite(operations, options)

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
유형
설명

operations

문서 배열

쓰기 (write) 작업의 배열 을 정의합니다. 배열 의 각 문서 실행하려는 쓰기 (write) 작업을 나타냅니다.

options

문서

작업에 대한 옵션 을 정의합니다.

operations 의 문서 는 다음 6가지 작업 중 하나를 나타낼 수 있습니다.

  • insertOne

  • replaceOne

  • UpdateOne

  • 업데이트

  • deleteOne

  • deleteMany

다음 섹션에서는 각 작업을 나타내는 문서에 사용해야 하는 구문에 대해 설명합니다.

{
namespace: '<db.collection>',
name: 'insertOne',
document: Document
}
필드
유형
설명

namespace

문자열

삽입 작업을 위한 데이터베이스 및 컬렉션 .

name

문자열

작업 이름입니다. "insertOne"(으)로 설정합니다.

document

문서

삽입할 문서입니다.

참고

문서 _id 필드 포함되어 있지 않으면 mongosh 가 자동으로 필드를 생성합니다.

updateOne 필터하다 와 일치하는 첫 번째 문서 업데이트합니다. updateMany 필터하다 와 일치하는 모든 문서를 업데이트합니다.

{
namespace: '<db>.<collection>',
name: 'updateOne' | 'updateMany',
filter: Document,
update: Document | Document[],
arrayFilters?: Document[],
hint?: Document | string,
collation?: Document,
upsert?: boolean
}
필드
유형
설명

namespace

문자열

업데이트 작업을 위한 데이터베이스 및 컬렉션 .

name

문자열

작업 이름입니다. "updateOne" 또는 "updateMany"로 설정합니다.

filter

문서

업데이트 하려는 하나 이상의 문서와 일치하는 필터하다 입니다.

update

문서 또는 문서 배열

수행할 업데이트 입니다.

arrayFilters

문서 배열

선택 사항. 배열 값 필드 업데이트 경우 업데이트 배열 요소를 지정하는 필터입니다.

hint

문서 또는 문자열

선택 사항. 작업에 사용할 인덱스 입니다.

collation

문서

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬 입니다.

upsert

부울

선택 사항. true인 경우 일치하는 항목이 없으면 문서 만듭니다. 기본값은 false입니다.

{
namespace: '<db>.<collection>',
name: 'replaceOne',
filter: Document,
replacement: Document,
hint?: Document | string,
collation?: Document
}
필드
유형
설명

namespace

문자열

바꾸기 작업을 위한 데이터베이스 및 컬렉션 .

name

문자열

작업 이름입니다. "replaceOne"(으)로 설정합니다.

filter

문서

업데이트 하려는 문서 와 일치하는 필터하다 입니다.

replacement

문서

대체 문서입니다.

hint

문서 또는 문자열

선택 사항. 작업에 사용할 인덱스 입니다.

collation

문서

(선택 사항) 결과를 정렬할 때 사용할 데이터 정렬 입니다.

deleteOne 필터하다 와 일치하는 첫 번째 문서 삭제합니다. deleteMany 은 필터하다 와 일치하는 모든 문서를 삭제합니다.

{
namespace: '<db>.<collection>',
name: 'deleteOne' | 'deleteMany',
filter: Document,
hint?: Document | string,
collation?: Document
}
필드
유형
설명

namespace

문자열

삭제 작업을 위한 데이터베이스 및 컬렉션 .

name

문자열

작업 이름입니다. "deleteOne" 또는 "deleteMany"로 설정합니다.

filter

문서

삭제 문서를 일치시키는 쿼리 선택기 입니다.

hint

문서 또는 문자열

선택 사항. 작업에 사용할 인덱스 입니다.

collation

문서

선택 사항. 작업에 사용할 데이터 정렬입니다.

{
ordered?: boolean,
verboseResults?: boolean,
bypassDocumentValidation?: boolean,
let?: Document
}
필드
유형
설명

ordered

부울

(선택 사항) MongoDB 사용자가 제공하는 문서 순서대로 대량 쓰기 (write) 수행함을 나타냅니다. true인 경우 첫 번째 오류에서 중지합니다. false인 경우 일부 작업이 실패하더라도 나머지 작업을 계속 처리 . 기본값은 true입니다.

verboseResults

부울

(선택 사항) bulkWrite() 가 자세한 결과를 출력할지 여부를 지정합니다. 기본값은 false입니다.

bypassDocumentValidation

부울

(선택 사항) 쓰기 (write) 작업이 문서 유효성 검사 규칙을 우회할지 여부를 지정합니다. 기본값은 false입니다.

let

문서

(선택 사항) 집계 변수를사용하여 액세스 할 수 있는 매개변수 이름 및 값에 대한 문서입니다.

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)
}
필드
유형
설명

acknowledged

부울

true 서버 승인을 반환하면 false, 그렇지 않으면 입니다.

insertedCount

integer

삽입된 문서 수입니다.

matchedCount

integer

필터하다 와 일치하는 문서 수입니다.

modifiedCount

integer

수정된 문서 수입니다.

deletedCount

integer

삭제된 문서 수입니다.

upsertedCount

integer

업서트된 문서 수입니다.

insertResults

문서에 정수 매핑

선택 사항. 성공적인 각 삽입 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드 포함됩니다.

  • insertedId: ObjectId. 삽입된 문서 의 _id 을(를) 나타냅니다.

updateResults

문서에 정수 매핑

선택 사항. 성공적인 각 업데이트 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드가 포함됩니다.

  • matchedCount: 정수. 일치하는 문서 수를 나타냅니다.

  • modifiedCount: 정수. 수정된 문서 수를 나타냅니다.

  • upsertedId: ObjectId. 업서트된 문서의 _id 를 나타냅니다. 선택 사항.

  • didUpsert: 부울. 문서 업서트된 경우 true, 그렇지 않으면 false 입니다.

deleteResults

문서에 정수 매핑

선택 사항. 성공적인 각 삭제 작업의 결과를 나타냅니다. 각 작업은 정수 키로 표시되며, 여기에는 작업에 해당하는 정보가 포함된 문서 포함됩니다. 문서에는 다음 필드 포함됩니다.

  • deletedCount: 정수. 삭제된 문서 수를 나타냅니다.

이 예시 를 사용하여 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) {}
}

돌아가기

db. 컬렉션.initializeUnorderedBulkOp

이 페이지의 내용