MongoDBでオブジェクトを更新する方法を解説!update()の基本的な使い方
MongoDBオブジェクトの更新方法
MongoDBのオブジェクト(ドキュメント)を更新するには、update()メソッドを使用します。ここでは、実際にコレクションを作成し、ドキュメントを更新するまでの手順をサンプルコード付きで順を追って解説します。
1. コレクションとドキュメントの作成
まず、insertOne()メソッドを使って、サンプルドキュメントを含むコレクションを作成しましょう。
> db.demo77.insertOne({"Details" : { "Score" : 78 } });
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2bd6f371bf0181ecc4228a")
}2. ドキュメントの表示
find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。
> db.demo77.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e2bd6f371bf0181ecc4228a"), "Details" : { "Score" : 78 } }3. 更新クエリの実行
続いて、MongoDBのオブジェクトを更新するクエリを見ていきましょう。ここでは、$set演算子を使ってネストされたフィールド「Details.Score」の値を更新しています。また、第3引数にmulti:trueを指定することで、条件に一致するすべてのドキュメントを一度に更新できます。
> db.demo77.update({'Details.Score':78},{$set:{'Details.Score':89}},{multi:true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })4. 更新結果の確認
再度find()メソッドを実行して、更新が正しく反映されたかを確認します。
> db.demo77.find();
実行結果は以下のとおりです。Scoreの値が78から89に更新されていることがわかります。
{ "_id" : ObjectId("5e2bd6f371bf0181ecc4228a"), "Details" : { "Score" : 89 } }補足:updateOne()・updateMany()の活用
なお、最新のMongoDBでは、非推奨となったupdate()の代わりに、最初の1件のみ更新するupdateOne()、または条件に一致するすべてのドキュメントを更新するupdateMany()の使用が推奨されています。上記の例と同じ処理は、次のように書き換えられます。
> db.demo77.updateMany({'Details.Score':78},{$set:{'Details.Score':89}});このように、$set演算子と組み合わせることで、ネストされたオブジェクトの特定のフィールドだけを効率的に更新できます。既存のドキュメント全体を置き換えることなく部分的な変更が可能なため、実務でも頻繁に利用される重要なテクニックです。
-
MongoDBでレコードを更新する方法|_idを指定したupdateの基本を解説
MongoDBのレコード更新の基本MongoDBで既存のレコード(ドキュメント)を更新するには、_idフィールドを基準に対象を特定して更新するのが基本です。ここでは、サンプルコレクションを作成し、実際にupdateメソッドを使ってレコードを更新する手順を順番に見ていきましょう。1. サンプルコレクションとドキュメントの作成まず、insertOne()メソッドを使ってコレクション「demo458」にドキュメントを3件挿入します。> db.demo458.insertOne( {_id:101,"Name":"David" } ); { "a
-
MongoDBで配列内のオブジェクトを更新する方法|update()と位置演算子($)の使い方
MongoDBで配列オブジェクトを更新するには?MongoDBでドキュメント内の配列オブジェクトを更新するには、update()メソッドを使用します。その際、ドット記法(dot notation)と位置演算子($)を組み合わせることがポイントです。位置演算子「$」は、クエリ条件に一致した配列要素を自動的に特定し、その要素だけを対象に更新処理を行ってくれます。それでは、実際にサンプルコレクションを作成しながら手順を見ていきましょう。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って、配列フィールド「details」を持つドキュメントを作成します。> d