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

MongoDBでドキュメントの特定の値だけを更新する方法

MongoDBでは、ドキュメント内の特定のフィールドだけを更新したい場合に、update()メソッドと更新演算子$setを組み合わせて使用します。$setを使うことで、指定したフィールドの値だけを変更でき、ドキュメント全体を書き換える必要はありません。

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

まず、ドキュメントを含むコレクションを作成しましょう。

> db.demo201.insertOne({"ClientName":"Chris Brown","ClientAge":26});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3c39ca03d395bdc21346e5")
}
> db.demo201.insertOne({"ClientName":"David Miller","ClientAge":35});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3c39d403d395bdc21346e6")
}
> db.demo201.insertOne({"ClientName":"Carol Taylor","ClientAge":28});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3c39e603d395bdc21346e7")
}

登録されたドキュメントの確認

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

> db.demo201.find();

このクエリを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e3c39ca03d395bdc21346e5"), "ClientName" : "Chris Brown", "ClientAge" : 26 }
{ "_id" : ObjectId("5e3c39d403d395bdc21346e6"), "ClientName" : "David Miller", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3c39e603d395bdc21346e7"), "ClientName" : "Carol Taylor", "ClientAge" : 28 }

特定の値のみを更新するクエリ

ここでは、「ClientAge」が35であるドキュメントの「ClientName」だけを「John Doe」に変更します。以下のようにupdate()$setを使用します。

> db.demo201.update({"ClientAge":35},{$set:{"ClientName":"John Doe"}},{multi:true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

実行結果を見ると、1件のドキュメントがマッチし(nMatched: 1)、1件が正常に更新されたことがわかります(nModified: 1)。

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

再度find()メソッドを実行して、コレクション内のすべてのドキュメントを確認してみましょう。

> db.demo201.find();

このクエリを実行すると、次の出力が得られます。

{ "_id" : ObjectId("5e3c39ca03d395bdc21346e5"), "ClientName" : "Chris Brown", "ClientAge" : 26 }
{ "_id" : ObjectId("5e3c39d403d395bdc21346e6"), "ClientName" : "John Doe", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3c39e603d395bdc21346e7"), "ClientName" : "Carol Taylor", "ClientAge" : 28 }

ご覧のとおり、条件に一致したドキュメント(ClientAge: 35)の「ClientName」だけが「John Doe」に更新され、他のフィールドや他のドキュメントには影響がありません。このように、$set演算子を使えばMongoDBのドキュメントの一部だけを安全かつ効率的に更新できます。

  1. MongoDBでドキュメントの値を1つだけインクリメントする方法

    MongoDBでドキュメント内の特定の値だけを更新し、インクリメント(加算)したい場合は、update()メソッドと$inc演算子を組み合わせて使用します。$incは指定したフィールドの数値を増減させるための演算子で、他のフィールドに影響を与えることなくピンポイントで値を変更できるのが特徴です。サンプルコレクションの作成まず、ドキュメントを格納したコレクションを作成します。> db.demo698.insertOne({Score:78});{   "acknowledged" : true,   "insertedI

  2. MongoDBでネストされたドキュメントを更新する方法|位置演算子$を使った配列要素の更新手順

    MongoDBでは、ドキュメント内の配列に格納されたネストされた(入れ子の)ドキュメントも、位置演算子「$」を使うことで効率的に更新できます。この記事では、実際のコード例を通じて、配列内の特定のサブドキュメントを更新する手順をわかりやすく解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使用して、ネストされたドキュメントを含むコレクションを作成します。ここでは「Information」というフィールドに、複数のサブドキュメントを持つ配列を格納しています。 > db.demo595.insertOne( { Information: [ { _i