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

【MongoDB】$set演算子で既存フィールドを保持したままレコードを更新する方法

MongoDBでドキュメントを更新する際、$set演算子を使えば、既存のフィールドを消すことなく、新しいフィールドの追加や特定フィールドのみの更新が可能です。$setを使わずにドキュメント全体を渡してしまうと、既存データが丸ごと上書きされるため注意が必要です。

ここからは、実際のコード例をもとに手順を詳しく解説していきます。

ステップ1:サンプルコレクションの作成

まず、insertOne()メソッドを使って、ドキュメントを格納したコレクションを作成しましょう。

> db.updateRecordDemo.insertOne({"StudentName":"Larry"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd6f95de8cc557214c0e0a")
}
> db.updateRecordDemo.insertOne({"StudentName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd6f9cde8cc557214c0e0b")
}
> db.updateRecordDemo.insertOne({"StudentName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd6f9dde8cc557214c0e0c")
}

ステップ2:登録済みドキュメントの確認

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

> db.updateRecordDemo.find().pretty();

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

{ "_id" : ObjectId("5cbd6f95de8cc557214c0e0a"), "StudentName" : "Larry" }
{ "_id" : ObjectId("5cbd6f9cde8cc557214c0e0b"), "StudentName" : "David" }
{ "_id" : ObjectId("5cbd6f9dde8cc557214c0e0c"), "StudentName" : "Mike" }

ステップ3:$set演算子でレコードを更新する

既存のフィールドを置き換えずにレコードを更新するには、update()メソッドに対して$set演算子を指定します。ここでは、「David」のドキュメントにStudentAgeフィールドを追加してみましょう。

> db.updateRecordDemo.update({"_id" :ObjectId("5cbd6f9cde8cc557214c0e0b") },{$set : {"StudentAge":24}});
   WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

WriteResultの「nModified : 1」は、1件のドキュメントが正常に更新されたことを示しています。

更新後のドキュメントを確認する

もう一度find()メソッドを実行して、コレクション内の全ドキュメントを表示してみます。

> db.updateRecordDemo.find().pretty();

実行結果は次のとおりです。

{ "_id" : ObjectId("5cbd6f95de8cc557214c0e0a"), "StudentName" : "Larry" }
{
   "_id" : ObjectId("5cbd6f9cde8cc557214c0e0b"),
   "StudentName" : "David",
   "StudentAge" : 24
}
{ "_id" : ObjectId("5cbd6f9dde8cc557214c0e0c"), "StudentName" : "Mike" }

このように、既存のStudentNameフィールドはそのまま維持され、新しくStudentAgeフィールドだけが追加されていることが確認できます。$set演算子を活用すれば、ドキュメント内の他のデータに影響を与えることなく、必要なフィールドだけを安全に更新できます。

  1. MongoDBでレコードを更新する方法|_idを指定したupdateの基本を解説

    MongoDBのレコード更新の基本MongoDBで既存のレコード(ドキュメント)を更新するには、_idフィールドを基準に対象を特定して更新するのが基本です。ここでは、サンプルコレクションを作成し、実際にupdateメソッドを使ってレコードを更新する手順を順番に見ていきましょう。1. サンプルコレクションとドキュメントの作成まず、insertOne()メソッドを使ってコレクション「demo458」にドキュメントを3件挿入します。> db.demo458.insertOne( {_id:101,"Name":"David" } ); { "a

  2. Snapchat(スナップチャット)でボタンを押し続けずに録画する方法【iPhone・Android対応】

    Snapchat(スナップチャット)は2011年に登場して以来、順調に成長を続けてきたアプリケーションです。特に若い世代を中心に人気が急拡大しており、世界的なコロナ禍をきっかけに利用者数は過去最高を記録しました。開発元は定期的にアップデートをリリースし、機能性や使いやすさの向上に努めており、豊富なフィルターはユーザーの間で大きな支持を集めています。このプラットフォームでは、自撮り写真や短い動画が最も人気のあるメディア形式となっています。 Snapchat最大の特徴は、ユーザーのプライバシーを最大限に守る設計になっている点です。写真・短い動画・チャットなど、あらゆるメディアは受信者が閲覧した直後