MongoDBのdeleteOne()メソッドでコレクションからドキュメントを削除する方法
MongoDBでコレクションからドキュメントを削除したい場合、deleteOne()メソッドを使用します。この記事では、実際にサンプルコレクションを作成し、deleteOne()メソッドを使ってドキュメントを削除するまでの一連の手順を、実行例とともにわかりやすく解説します。
1. サンプルコレクションの作成
まず、動作確認用のコレクション「deleteDocumentsDemo」を作成し、いくつかのドキュメントを挿入しておきましょう。以下のようにinsert()メソッドを使用します。
> db.deleteDocumentsDemo.insert({"Name":"Larry","Age":23});
WriteResult({ "nInserted" : 1 })
> db.deleteDocumentsDemo.insert({"Name":"Mike","Age":21});
WriteResult({ "nInserted" : 1 })
> db.deleteDocumentsDemo.insert({"Name":"Sam","Age":24});
WriteResult({ "nInserted" : 1 })
各insert()の実行結果として「nInserted : 1」が返されていることから、3件のドキュメントが正常に挿入されたことが確認できます。
2. コレクション内のドキュメントを確認する
次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。クエリは以下の通りです。
> db.deleteDocumentsDemo.find().pretty();
実行すると、以下のような出力が得られます。
{
"_id" : ObjectId("5c6ab0e064f3d70fcc914805"),
"Name" : "Larry",
"Age" : 23
}
{
"_id" : ObjectId("5c6ab0ef64f3d70fcc914806"),
"Name" : "Mike",
"Age" : 21
}
{ "_id" : ObjectId("5c6ab0f864f3d70fcc914807"), "Name" : "Sam", "Age" : 24 }
現時点では、「Larry」「Mike」「Sam」の3件のドキュメントが登録されていることがわかります。
3. deleteOne()メソッドでドキュメントを削除する
それでは、deleteOne()メソッドを使ってドキュメントを削除してみましょう。メソッド名が示すとおり、deleteOne()は条件に一致したドキュメントのうち、最初の1件だけを削除します。複数のドキュメントが条件に一致しても、削除されるのは1件のみである点に注意してください。
ここでは、Nameフィールドが「Larry」のドキュメントを削除対象として指定します。クエリは以下の通りです。
> db.deleteDocumentsDemo.deleteOne({"Name":"Larry"});
実行すると、以下のような結果が返されます。
{ "acknowledged" : true, "deletedCount" : 1 }
この出力には重要な情報が含まれています。「acknowledged : true」は削除操作が正常に受け付けられたことを示し、「deletedCount : 1」は実際に削除されたドキュメントの件数を表しています。
4. 削除後のコレクションを確認する
最後に、find()コマンドを使って、削除後のコレクションの状態を確認しましょう。クエリは以下の通りです。
> db.deleteDocumentsDemo.find().pretty();
実行結果は以下のようになります。
{
"_id" : ObjectId("5c6ab0ef64f3d70fcc914806"),
"Name" : "Mike",
"Age" : 21
}
{ "_id" : ObjectId("5c6ab0f864f3d70fcc914807"), "Name" : "Sam", "Age" : 24 }
上記の出力を見ると、Nameフィールドが「Larry」のドキュメントはすでに存在せず、「Mike」と「Sam」の2件だけが残っていることが確認できます。これにより、deleteOne()メソッドによって目的のドキュメントが正しく削除されたことがわかります。
まとめ:deleteOne()メソッドのポイント
- deleteOne()は、条件に一致したドキュメントのうち最初の1件のみを削除するメソッドです。
- 戻り値の「deletedCount」を確認することで、実際に何件削除されたかを把握できます。
- 条件に一致するすべてのドキュメントを削除したい場合は、代わりにdeleteMany()メソッドを使用します。
- 削除条件として空のオブジェクト({})を渡すと、先頭のドキュメントが削除されるため、意図しないデータ消失に注意が必要です。
このように、deleteOne()メソッドを使えば、MongoDBのコレクションから特定の条件に合致するドキュメントを簡単に1件だけ削除できます。削除操作は元に戻せないため、本番環境で実行する前には必ずfind()で対象ドキュメントを確認することをおすすめします。
-
MongoDBコレクションから先頭のドキュメントを取得する方法
MongoDBでコレクションの先頭(最上位)にあるドキュメントを取得するには、find()メソッドとlimit()メソッドを組み合わせて使用します。特に1件だけ取得したい場合は、limit(1)を指定するのが簡単で効果的です。まずは実際に動作を確認するため、サンプル用のコレクションにドキュメントを挿入してみましょう。> db.demo681.insertOne({_id:101,Name:"Chris"}); { "acknowledged" : true, "insertedId" : 101 } > db.demo68
-
【Java入門】MongoDBのコレクションから複数ドキュメントを一括削除する方法(deleteManyの使い方)
JavaからMongoDBを操作する際、com.mongodb.client.MongoCollectionインターフェースが提供するdeleteMany()メソッドを使用すると、コレクション内の複数のドキュメントを一度に削除できます。このメソッドを呼び出すときには、削除対象を特定するためのフィルター(検索条件)を引数として渡す必要があります。フィルターに一致したすべてのドキュメントがまとめて削除される仕組みです。deleteMany()メソッドのポイントdeleteMany()は、指定した条件に一致する「すべて」のドキュメントを削除します。もし1件だけ削除したい場合は、代わりにdeleteO