MongoDBで_idを指定してコレクション内のドキュメントを更新する方法
MongoDBでは、_idを指定して特定のドキュメントを更新する際に、$set演算子を使用します。_idは各ドキュメントの一意な識別子であるため、これを条件にすることで目的のドキュメントだけを正確に更新できます。
この記事では、実際にコレクションを作成し、_idをキーにしてドキュメントを更新する手順を順番に解説します。
1. コレクションの作成とドキュメントの挿入
まず、insertOne()メソッドを使ってサンプルのコレクションにドキュメントを挿入します。
db.demo741.insertOne({SubjectName:"MySQL"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead718657bb72a10bcf0672")
}
> db.demo741.insertOne({SubjectName:"C"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead718957bb72a10bcf0673")
}
> db.demo741.insertOne({SubjectName:"Java"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead718e57bb72a10bcf0674")
}2. 挿入されたドキュメントの確認
find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。
> db.demo741.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5ead718657bb72a10bcf0672"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5ead718957bb72a10bcf0673"), "SubjectName" : "C" }
{ "_id" : ObjectId("5ead718e57bb72a10bcf0674"), "SubjectName" : "Java" }3. _idを指定してドキュメントを更新する
次に、update()メソッドと$set演算子を組み合わせて、特定の_idを持つドキュメントを更新します。ここでは、「C」というSubjectNameを持つドキュメント(ObjectId: 5ead718957bb72a10bcf0673)を「PL/SQL」に変更します。
>db.demo741.update({_id:ObjectId("5ead718957bb72a10bcf0673")},{$set:{SubjectName:"PL/SQL"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })実行結果の「nMatched : 1」「nModified : 1」は、1件のドキュメントが条件に一致し、正常に更新されたことを示しています。
4. 更新後のドキュメントの確認
再度find()メソッドを実行して、更新が正しく反映されているか確認しましょう。
> db.demo741.find();
出力結果は以下の通りです。
{ "_id" : ObjectId("5ead718657bb72a10bcf0672"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5ead718957bb72a10bcf0673"), "SubjectName" : "PL/SQL" }
{ "_id" : ObjectId("5ead718e57bb72a10bcf0674"), "SubjectName" : "Java" }ご覧のとおり、指定した_idを持つドキュメントの「SubjectName」フィールドだけが「C」から「PL/SQL」に更新され、他のドキュメントには影響していません。
まとめ
MongoDBで_idを指定してドキュメントを更新する場合は、update()メソッドの第1引数に_idの条件を指定し、第2引数で$set演算子を使って更新したいフィールドと値を記述します。$setを使用することで、指定したフィールドのみが更新され、ドキュメント内の他のフィールドは保持されます。なお、最新のMongoDBではupdateOne()やupdateMany()の使用が推奨されている点にも留意してください。
-
MongoDBでコレクションの名前を変更する方法(renameCollectionの使い方)
MongoDBで既存のコレクションの名前を変更したい場合、renameCollection()メソッドを使用します。この記事では、実際にコレクションを作成し、その名前を変更するまでの手順を順番に解説します。1. ドキュメントを含むコレクションを作成するまず、insertOne()メソッドを使ってサンプルドキュメントを挿入し、コレクション「demo690」を作成します。> db.demo690.insertOne({_id:101,Name:Sam}); { acknowledged : true, insertedId : 101 } > db.demo690.insertOne(
-
MongoDBコレクションにインデックスを作成する方法
MongoDBコレクションにインデックスを作成する方法MongoDBでインデックスを作成するには、createIndex()メソッドを使用します。インデックスを適切に設定することで、クエリの検索速度を大幅に向上させることができます。まず、ドキュメントを含むコレクションに対してインデックスを作成してみましょう。以下の例では、details.idフィールドに対して昇順(1)のインデックスを作成しています。> db.demo702.createIndex({details.id:1});{ createdCollectionAutomatically : tr