MongoDBのコレクションからドキュメントを削除する方法|remove()メソッドの使い方を解説
MongoDBのコレクションからドキュメントを削除するには、remove()メソッドを使用します。基本的な構文は以下のとおりです。
db.yourCollectionName.remove(yourDeleteValue);
本記事では、実際にサンプルコレクションを作成しながら、単一ドキュメントの削除方法と全ドキュメントの一括削除方法を順を追って解説します。
サンプルコレクションの作成
まず、ドキュメントをいくつか含むコレクションを作成しましょう。以下のクエリを実行します。
> db.deleteDocuments.insert({"UserId":1,"UserName":"Bob","UserTechnicalSubject":"Introduction to PL/SQL"});
WriteResult({ "nInserted" : 1 })
> db.deleteDocuments.insert({"UserId":2,"UserName":"Carol","UserTechnicalSubject":"Introduction to MongoDB"});
WriteResult({ "nInserted" : 1 })
> db.deleteDocuments.insert({"UserId":3,"UserName":"John","UserTechnicalSubject":"Introduction to MySQL"});
WriteResult({ "nInserted" : 1 })
> db.deleteDocuments.insert({"UserId":4,"UserName":"Maxwell","UserTechnicalSubject":"Introduction to SQL Server"});
WriteResult({ "nInserted" : 1 })作成したコレクション内のすべてのドキュメントは、find()コマンドを使って確認できます。
> db.deleteDocuments.find().pretty();
実行結果は以下のとおりです。
{
"_id" : ObjectId("5c6aaa9e64f3d70fcc9147ff"),
"UserId" : 1,
"UserName" : "Bob",
"UserTechnicalSubject" : "Introduction to PL/SQL"
}
{
"_id" : ObjectId("5c6aaab464f3d70fcc914800"),
"UserId" : 2,
"UserName" : "Carol",
"UserTechnicalSubject" : "Introduction to MongoDB"
}
{
"_id" : ObjectId("5c6aaac764f3d70fcc914801"),
"UserId" : 3,
"UserName" : "John",
"UserTechnicalSubject" : "Introduction to MySQL"
}
{
"_id" : ObjectId("5c6aaadc64f3d70fcc914802"),
"UserId" : 4,
"UserName" : "Maxwell",
"UserTechnicalSubject" : "Introduction to SQL Server"
}単一のドキュメントを削除する
コレクションから特定の1件のドキュメントを削除する場合も、remove()メソッドを使用します。削除条件を引数として渡すことで、条件に一致するドキュメントだけが削除されます。
ここでは、「UserId:4」のドキュメントを削除してみましょう。クエリは以下のとおりです。
> db.deleteDocuments.remove({"UserId":4,"UserName":"Maxwell","UserTechnicalSubject":"Introduction to SQL Server"});
WriteResult({ "nRemoved" : 2 })削除が正常に完了したかどうかは、find()コマンドで全ドキュメントを表示して確認できます。
> db.deleteDocuments.find().pretty();
実行結果を見ると、「UserId:4」のドキュメントが削除され、残り3件のみが表示されていることがわかります。
{
"_id" : ObjectId("5c6aaa9e64f3d70fcc9147ff"),
"UserId" : 1,
"UserName" : "Bob",
"UserTechnicalSubject" : "Introduction to PL/SQL"
}
{
"_id" : ObjectId("5c6aaab464f3d70fcc914800"),
"UserId" : 2,
"UserName" : "Carol",
"UserTechnicalSubject" : "Introduction to MongoDB"
}
{
"_id" : ObjectId("5c6aaac764f3d70fcc914801"),
"UserId" : 3,
"UserName" : "John",
"UserTechnicalSubject" : "Introduction to MySQL"
}すべてのドキュメントを削除する
コレクション内の全ドキュメントを削除したい場合は、条件に空のオブジェクト「{}」を指定してremove()メソッドを呼び出します。構文は以下のとおりです。
db.yourCollectionName.remove({ });実際のクエリは以下のようになります。
> db.deleteDocuments.remove({});実行結果は以下のとおりです。
WriteResult({ "nRemoved" : 3 })これで、コレクション「deleteDocuments」からすべてのドキュメントが削除されました。
補足:新しいバージョンでの推奨メソッド
なお、remove()メソッドはMongoDB 3.2以降で非推奨(deprecated)となっています。現在のバージョンでは、用途に応じて以下のメソッドの使用が推奨されています。
- deleteOne():条件に一致するドキュメントを1件だけ削除する
- deleteMany():条件に一致するすべてのドキュメントを削除する
例えば、単一ドキュメントの削除であれば「db.deleteDocuments.deleteOne({"UserId":4})」、全件削除であれば「db.deleteDocuments.deleteMany({})」のように記述します。新規開発では、これらのメソッドを利用するようにしましょう。
-
MongoDBコレクションから重複を削除する方法|unique制約の使い方を解説
MongoDBコレクションから重複を削除する方法MongoDBのコレクションに重複データが登録されるのを防ぎたい場合は、ユニーク制約(unique: true)を設定するのが最も基本的かつ確実な方法です。対象フィールドにユニークインデックスを作成しておくことで、同じ値を持つドキュメントの挿入が自動的に拒否され、コレクション内に重複が存在しない状態を維持できます。基本構文以下のように、コレクション名とフィールド名を指定してユニークインデックスを作成します。「dropDups: true」を付けることで、インデックス作成時点で既に存在していた重複ドキュメントも削除され、各グループの最初の1件のみが
-
【Java入門】MongoDBのコレクションから複数ドキュメントを一括削除する方法(deleteManyの使い方)
JavaからMongoDBを操作する際、com.mongodb.client.MongoCollectionインターフェースが提供するdeleteMany()メソッドを使用すると、コレクション内の複数のドキュメントを一度に削除できます。このメソッドを呼び出すときには、削除対象を特定するためのフィルター(検索条件)を引数として渡す必要があります。フィルターに一致したすべてのドキュメントがまとめて削除される仕組みです。deleteMany()メソッドのポイントdeleteMany()は、指定した条件に一致する「すべて」のドキュメントを削除します。もし1件だけ削除したい場合は、代わりにdeleteO