MongoDBで特定のドキュメントを削除する方法 – remove()クエリの使い方を解説
特定のドキュメントを削除するには、MongoDBの remove() メソッドを使用します。まず、ドキュメントを含むコレクションを作成してみましょう。
> db.demo56.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e272e0bcfb11e5c34d89917")
}
> db.demo56.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e272e10cfb11e5c34d89918")
}
> db.demo56.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e272e13cfb11e5c34d89919")
}find() メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo56.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e272e0bcfb11e5c34d89917"), "Name" : "Chris" }
{ "_id" : ObjectId("5e272e10cfb11e5c34d89918"), "Name" : "David" }
{ "_id" : ObjectId("5e272e13cfb11e5c34d89919"), "Name" : "Bob" }特定のドキュメントを削除するクエリ
続いて、特定のドキュメントを削除するためのクエリを見ていきましょう。ここでは、_id フィールドを条件に指定してドキュメントを削除します。
> db.demo56.remove({_id:ObjectId("5e272e10cfb11e5c34d89918")});
WriteResult({ "nRemoved" : 1 })削除が完了したら、再度 find() メソッドを使ってコレクション内のすべてのドキュメントを表示し、結果を確認します。
> db.demo56.find();
実行結果は以下のとおりです。
{ "_id" : ObjectId("5e272e0bcfb11e5c34d89917"), "Name" : "Chris" }
{ "_id" : ObjectId("5e272e13cfb11e5c34d89919"), "Name" : "Bob" }出力を見ると、指定したドキュメント(Nameが「David」のドキュメント)だけが削除され、残りの2件はそのまま残っていることがわかります。
補足: deleteOne() / deleteMany() の使用を推奨
MongoDB 3.2以降では、remove() メソッドは非推奨となっており、代わりに deleteOne() や deleteMany() の使用が推奨されています。特定のドキュメントを1件だけ削除する場合は、以下のように記述します。
> db.demo56.deleteOne({_id:ObjectId("5e272e10cfb11e5c34d89918")});
{ "acknowledged" : true, "deletedCount" : 1 }条件に一致するドキュメントを確実に1件だけ削除したい場合は deleteOne() を、一致するすべてのドキュメントを削除したい場合は deleteMany() を使うことで、より安全かつ明確に削除操作を行えます。
-
MongoDBドキュメントから特定の値をフィルタリングする方法
MongoDBドキュメントから特定の値をフィルタリングする方法MongoDBでドキュメント内の配列から特定の値を抽出したい場合は、集計パイプラインで $filter を使用します。この記事では、実際にコレクションを作成し、特定の条件に一致する要素だけをフィルタリングする手順を、サンプルコードとともに解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、配列フィールドを含むドキュメントを持つコレクションを作成します。 db.demo751.insertOne( ... { ... _id: 101, ... details: [
-
MongoDBで配列をクエリして特定の値を取得する方法
配列から特定の値を取得するには、aggregate()メソッドと$projectステージを組み合わせて使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。 > db.demo761.insertOne( ... { ... "details": [ ... { ... "