updateOne() (単一ドキュメントの更新)

最終更新:2026-10-09

updateOne() (単一ドキュメントの更新)

updateOne() はフィルタに一致する最初のドキュメントを更新します。複数一致した場合も最初の1件(自然順序)だけが更新されます。変更は更新演算子($set/$inc/$push...)で表現します。結果には matchedCount、modifiedCount、upsertedId が含まれます。

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

📝 構文

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

⚙️ パラメータ

フィルター条件ドキュメントに一致する述語オブジェクト。クエリ演算子をサポートします。
更新操作更新演算子のオブジェクト(例: {$set: {age: 22}})。
upsert任意。一致するものがない場合に新しいドキュメントを挿入します。既定は false。

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

▶ 例

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

// updateOne: Alice の年齢を 22 に設定する
db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 22 } }
)

出力:

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

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QupdateOne と findOneAndUpdate の違いは何ですか?
AupdateOne はカウンタ(matched/modifiedCount)のみを返します。findOneAndUpdate は更新前(または更新後)のドキュメントを返すため、旧値/新値が必要な場合に便利です。
QupdateOne が複数のドキュメントに一致した場合はどうなりますか?
A最初に一致したドキュメントのみ更新します。全一致を更新するには updateMany を使います。順序が重要な場合は sort オプションを渡して、どのドキュメントを最初とみなすかを制御できます。
QupdateOne で $set と $inc を組み合わせられますか?
Aできます。更新ドキュメントに複数の演算子を含められます。例: { $set: { status: 'active' }, $inc: { visits: 1 } }。順番に原子的に適用されます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%