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

既存のドキュメントを上書きせずにMongoDBのドキュメントを更新する方法

MongoDBで特定のフィールドの値だけを更新したい場合には、update()メソッドと$set演算子を組み合わせて使用します。この方法を使えば、既存のドキュメントを丸ごと上書きすることなく、指定したフィールドだけを安全に変更できます。

1. コレクションの作成とドキュメントの挿入

まず、insertOne()メソッドを使って、サンプル用のコレクションにドキュメントを挿入します。

> db.demo401.insertOne(
...     {
...        "_id" : 1001,
...        "Name" : "Chris",
...        "SubjectName" : "MongoDB",
...        "Score" : 45
...     }
... );
{ "acknowledged" : true, "insertedId" : 1001 }

2. 挿入したドキュメントの確認

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.demo401.find();

実行すると、次のような出力が得られます。

{ "_id" : 1001, "Name" : "Chris", "SubjectName" : "MongoDB", "Score" : 45 }

3. $setを使った部分更新

ここからが本題です。既存のドキュメントを上書きせずに更新するには、更新条件とともに$setを指定します。以下の例では、「_id」が1001のドキュメントに対して「Score」フィールドだけを89に変更しています。

> db.demo401.update({_id: 1001}, {$set: {Score:89}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

nMatched: 1は条件に一致したドキュメントが1件あること、nModified: 1は実際に1件が更新されたことを示しています。$setを使っているため、「Name」や「SubjectName」など他のフィールドはそのまま保持されます。

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

もう一度find()を実行して、更新結果を確認しましょう。

> db.demo401.find();

出力を見ると、「Score」だけが45から89に変わっており、その他のフィールドは元のままになっています。

{ "_id" : 1001, "Name" : "Chris", "MongoDB" : "MongoDB", "Score" : 89 }

補足:最新バージョンではupdateOne()が推奨

MongoDBの新しいバージョンでは、update()は非推奨(deprecated)となっており、代わりにupdateOne()updateMany()の使用が推奨されています。$setの使い方はまったく同じなので、以下のように書き換えるだけでOKです。

> db.demo401.updateOne({_id: 1001}, {$set: {Score:89}})

このように$set演算子を活用すれば、ドキュメント全体を置き換えるリスクを避けながら、必要なフィールドだけをピンポイントで更新できます。誤ってデータを消してしまうトラブルを防ぐためにも、更新操作の際は必ず$setを使う習慣をつけましょう。

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

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

  2. JavaでMongoDBコレクションの既存ドキュメントを更新する方法

    MongoDBシェルのupdate()メソッドは、既存のドキュメント内の値を更新するために使用されます。 構文 db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA) JavaからMongoDBのドキュメントを操作する場合は、com.mongodb.client.MongoCollectionインターフェースが提供するupdateOne()メソッドを使用することで、条件に一致した単一のドキュメントを更新できます。 このメソッドには、次の2つの引数を渡します。 フィルター(Filter):更新対象のドキュメントを特定するための検