Docs Menu
Docs Home
/ /

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

Mongo.bulkWrite(operations, options)

Mongo.bulkWrite() performs multiple write operations across multiple databases and collections in a single call, unlike db.collection.bulkWrite() which operates on a single collection.

注意

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 updates the first document matching the filter. updateMany updates all documents matching the filter.

{
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

ドキュメントの配列

Optional. Filters to specify which array elements to update if you update an array-valued field.

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 deletes the first document matching the filter. deleteMany deletes all documents matching the filter.

{
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() を使用して、次の操作を順番に実行します。

  • は、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 } }
}

戻る

db.collection.initializeUndefinedBulkOp

項目一覧