Docs Menu
Docs Home
/ /

Mongo.bulkWrite()(mongoshメソッド)

Mongo.bulkWrite(operations, options)

Mongo.bulkWrite() は、単一のコレクションに対して操作する とは異なり、1db.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() は、次の 2 つのパラメータを受け入れます。

Parameter
タイプ
説明

operations

ドキュメントの配列

の書込み (write) 操作の配列を定義します。配列内の各ドキュメントは、実行する書込み操作を表します。

options

ドキュメント

操作のオプションを定義します。

operations のドキュメントは、次の 6 つの操作のいずれかを表すことができます。

  • 1 つを挿入

  • replaceOne

  • 更新 1

  • 多数更新

  • 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

ドキュメント

アップデートする 1 つ以上のドキュメントに一致するフィルター。

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 が指定したドキュメントの順序で一括書き込みを実行することを示します。 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: 整数。削除されたドキュメントの数を表します。

この例では、Mongo.bulkWrite() を使用して、 sample_mflixデータベースに対して次の操作を順番に実行します。

  • は、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.collection.initializeUndefinedBulkOp

項目一覧