bulkWrite() (混合バルク操作)

最終更新:2026-10-09

bulkWrite() (混合バルク操作)

bulkWrite() は1回の呼び出しで複数の書き込み操作を混在して実行します: insertOne、updateOne、updateMany、replaceOne、deleteOne、deleteMany。各操作は、操作タイプとそのペイロードを持つオブジェクトです。例: `db.users.bulkWrite([{ insertOne: { document: { name: 'A' } } }, { updateOne: { filter: { name: 'B' }, update: { $set: { age: 1 } } } }])`。結果は操作タイプごとにカウンタがまとめられます。

カテゴリ書き込み
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.bulkWrite(<operations>, { ordered: <bool> })

⚙️ パラメータ

操作の配列書き込み操作オブジェクトの配列。各要素は {insertOne: {document: ...}} の形式です。
ordered任意。true は最初のエラーで停止し、false は続行します。既定は true。

戻り値:BulkWriteResult。操作種別ごとに集計されたカウンターオブジェクト。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// bulkWrite: 挿入・更新・削除を1回の呼び出しで行う
db.users.bulkWrite([
  { insertOne: { document: { name: 'Dana', age: 28 } } },
  { updateOne: { filter: { name: 'Alice' }, update: { $set: { age: 23 } } } },
  { deleteOne: { filter: { name: 'Bob' } } }
])

出力:

{
  acknowledged: true,
  insertedCount: 1,
  matchedCount: 1,
  modifiedCount: 1,
  deletedCount: 1
}

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QbulkWrite はループでメソッドを呼ぶより速いですか?
AbulkWrite() はすべての操作を1つのリクエストで送るため、単一メソッドのループよりはるかに高速です。マイグレーションやインポートに最適です。
QbulkWrite はどの操作タイプをサポートしますか?
AinsertOne、updateOne、updateMany、replaceOne、deleteOne、deleteMany を1回の呼び出しで混在できます。
QbulkWrite の ordered オプションはどう働きますか?
Aordered: true(デフォルト)は最初のエラーで停止します。false は失敗した操作をスキップして続行します。部分的な成功が許容されるバッチジョブに適しています。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%