insertMany() (バルク挿入)

最終更新:2026-10-09

insertMany() (バルク挿入)

insertMany() は1回の呼び出しで複数のドキュメントを挿入します。例: `db.users.insertMany([{ name: 'A' }, { name: 'B' }])`。ordered: true(デフォルト)では順番に挿入され、最初のエラーで停止します。false の場合は残りのドキュメントも挿入を試みます。結果には acknowledged と insertedIds が含まれ、各ドキュメントのインデックスと _id が対応付けられています。insertOne() をループするよりもラウンドトリップを大幅に削減できるため、シード処理やマイグレーションの定番です。

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

📝 構文

db.<collection>.insertMany(<documents>, { ordered: <bool>, writeConcern: <options> })

⚙️ パラメータ

ドキュメント配列挿入する BSON ドキュメントの配列。
ordered任意。true は最初のエラーで停止し、false はスキップして続行します。既定は true。
writeConcern任意。書き込み保証(write concern)。

戻り値:acknowledged と insertedIds(インデックスから _id への対応)を持つ結果オブジェクト。

▶ 例

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

// insertMany: 3人のユーザーを一度に挿入する
db.users.insertMany([
  { name: 'Alice', age: 21 },
  { name: 'Bob', age: 25 },
  { name: 'Cara', age: 30 }
])

出力:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId('64c8a1b20000000000000001'),
    '1': ObjectId('64c8a1b20000000000000002'),
    '2': ObjectId('64c8a1b20000000000000003')
  }
}

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QinsertMany と insertOne の違いは何ですか?
AinsertMany() は1回のラウンドトリップで複数のドキュメントを書き込みます。insertOne() は1件のみです。バルクのワークロードでは insertMany() の方が insertOne() のループよりはるかに高速です。
QinsertMany の ordered オプションは何をしますか?
Aordered: true では最初のエラーで挿入が停止し、バッチはロールバックされます。false では失敗したドキュメントをスキップして残りを挿入し続けます。
Q一部のドキュメントだけ失敗した場合、insertMany は何を返しますか?
A成功したインデックスだけをカバーする acknowledged と insertedIds を返します。失敗の詳細はスローされる BulkWriteError に含まれます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%