MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで特定のIDに一致する複数ドキュメントを一括更新する方法(updateMany活用ガイド)

MongoDBのupdateMany()で特定IDのドキュメントをまとめて更新する

MongoDBでは、updateMany()メソッドを使うことで、フィルター条件に一致するすべてのドキュメントを一度に更新できます。単一ドキュメントのみを対象とするupdateOne()とは異なり、複数件を効率的に処理したい場合に非常に便利です。

ここでは、特定の_id(複数)に一致するドキュメントだけを選択的に更新する手順を、サンプルコードとともに解説します。

1. サンプルコレクションの作成

まず、insertOne()を使ってテスト用のコレクション「demo476」にドキュメントを作成します。

> db.demo476.insertOne({_id:1,"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo476.insertOne({_id:2,"Name":"David"});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo476.insertOne({_id:3,"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : 3 }
> db.demo476.insertOne({_id:4,"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : 4 }

2. コレクション内の全ドキュメントを確認

find()メソッドを実行して、現在登録されているすべてのドキュメントを表示します。

> db.demo476.find();

実行結果は以下の通りです。

{ "_id" : 1, "Name" : "Chris" }
{ "_id" : 2, "Name" : "David" }
{ "_id" : 3, "Name" : "Bob" }
{ "_id" : 4, "Name" : "Carol" }

3. 特定のIDに一致するドキュメントを一括更新するクエリ

次に、$in演算子を使って_idが「1」と「3」のドキュメントに一致させ、$set演算子で「Name」フィールドを「Robert」に更新します。

> db.demo476.updateMany({_id:{$in:[1,3]}},{$set:{Name:"Robert"}});
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }

実行結果を見ると、「matchedCount: 2」「modifiedCount: 2」と表示されており、条件に一致した2件のドキュメントが正常に更新されたことがわかります。

4. 更新後のドキュメントを確認

再度find()メソッドを実行して、更新結果を確認しましょう。

> db.demo476.find();

出力は以下のようになります。

{ "_id" : 1, "Name" : "Robert" }
{ "_id" : 2, "Name" : "David" }
{ "_id" : 3, "Name" : "Robert" }
{ "_id" : 4, "Name" : "Carol" }

ポイントまとめ

  • updateMany():フィルター条件に一致するすべてのドキュメントを一括更新するメソッド。
  • $in演算子:指定した配列内のいずれかに一致する値を持つドキュメントを抽出できる。
  • $set演算子:既存フィールドの値を更新するために使用する。

このように、$inと$setを組み合わせることで、離れた複数のIDを持つドキュメントでも1回のクエリで柔軟に更新できます。大量データの部分更新やステータス変更など、実務でも頻繁に使われるパターンなので、ぜひ覚えておきましょう。

  1. MongoDBでコレクション内のドキュメントの各フィールドを数式を使って更新する方法

    コレクション内のドキュメントの各フィールドを数式(計算式)で一括更新したい場合は、MongoDBの update() メソッドに $mul 演算子と全位置演算子 $[] を組み合わせて使用します。本記事では、配列内のすべての要素に対して特定のフィールドの値を乗算で更新する具体的な手順を解説します。サンプルコレクションの作成まず、insertOne() メソッドを使って、ドキュメントを含むコレクションを作成します。> db.demo749.insertOne({details:[{id:1,a:10},{id:2,a:5},{id:3,a:20}]}); { acknowledge

  2. MongoDBで1つのクエリを使って複数のドキュメントを一括更新する方法(bulkWrite活用ガイド)

    MongoDBで1つのクエリで複数のドキュメントを更新するには?MongoDBで1回のリクエスト(1つのクエリ)で複数のドキュメントを効率的に更新したい場合は、bulkWrite()メソッドを使用します。bulkWrite()は、複数の書き込み操作(insert、update、deleteなど)をまとめてサーバーに送信できるため、個別にクエリを発行するよりもパフォーマンス面で優れています。ここでは、updateOne操作を組み合わせて、複数のドキュメントのフィールドを一度に更新する手順を具体的に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って