updateMany() (複数ドキュメントの更新)

最終更新:2026-10-09

updateMany() (複数ドキュメントの更新)

updateMany() はフィルタに一致するすべてのドキュメントを更新します。例: `db.users.updateMany({ age: { $lt: 18 } }, { $set: { isTeen: true } })`。最初の一致のみを更新する updateOne() とは異なり、一致する全ドキュメントに更新を適用します。バッチでの状態変更や全フィールド追加に便利です。結果は matchedCount(一致数)と modifiedCount(実際に変更された数)を報告します。

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

📝 構文

db.<collection>.updateMany(<filter>, <update>, { upsert: <bool> })

⚙️ パラメータ

フィルター条件述語オブジェクト。クエリ演算子をサポートします。
更新操作すべての一致に適用される更新演算子のオブジェクト。
upsert任意。一致するものがない場合に1件のドキュメントを挿入します。既定は false。

戻り値:UpdateResult: { acknowledged, matchedCount, modifiedCount, upsertedId }。

▶ 例

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

// updateMany: 30歳より上の全員を senior としてマークする
db.users.updateMany(
  { age: { $gt: 30 } },
  { $set: { isSenior: true } }
)

出力:

{ acknowledged: true, matchedCount: 3, modifiedCount: 3, upsertedId: null }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QupdateMany は一致するすべてのドキュメントを更新しますか?
Aはい、一致するすべてのドキュメントを更新します。空フィルタ {} を渡すとコレクション全体を更新するので注意してください。
QupdateMany と updateOne の違いは何ですか?
AupdateOne() は最初の一致のみ、updateMany() は全一致を更新します。一括変更には updateMany() を選びます。
Qなぜ modifiedCount が matchedCount より小さくなるのですか?
A一致したドキュメントの中にすでに対象の値を持つものがあると、MongoDB はそれを変更なしと数えるため、modifiedCount から除外されます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%