【Java入門】MongoDBのコレクションから複数ドキュメントを一括削除する方法(deleteManyの使い方)
JavaからMongoDBを操作する際、com.mongodb.client.MongoCollectionインターフェースが提供するdeleteMany()メソッドを使用すると、コレクション内の複数のドキュメントを一度に削除できます。このメソッドを呼び出すときには、削除対象を特定するためのフィルター(検索条件)を引数として渡す必要があります。フィルターに一致したすべてのドキュメントがまとめて削除される仕組みです。
deleteMany()メソッドのポイント
deleteMany()は、指定した条件に一致する「すべて」のドキュメントを削除します。もし1件だけ削除したい場合は、代わりにdeleteOne()メソッドを使用してください。また、削除前に条件をよく確認しないと、意図しない大量のデータを失う恐れがあるため注意が必要です。
サンプルプログラム
以下の例では、「students」コレクションに5件のドキュメントを挿入し、その後「city」が「Delhi」であるドキュメントを一括削除しています。
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
public class DeletingMultipleDocuments {
public static void main(String args[]) {
// MongoDBクライアントの作成
MongoClient mongo = new MongoClient("localhost", 27017);
// データベースへの接続
MongoDatabase database = mongo.getDatabase("myDatabase");
// コレクションオブジェクトの取得
MongoCollection<Document> collection = database.getCollection("students");
// 挿入用ドキュメントの作成
Document document1 = new Document("name", "Ram").append("age", 26).append("city", "Delhi");
Document document2 = new Document("name", "Robert").append("age", 27).append("city", "Vishakhapatnam");
Document document3 = new Document("name", "Rhim").append("age", 30).append("city", "Delhi");
Document document4 = new Document("name", "Radha").append("age", 45).append("city", "Delhi");
Document document5 = new Document("name", "Sarmista").append("age", 35).append("city", "Mumbai");
// 作成したドキュメントの一括挿入
List<Document> list = new ArrayList<Document>();
list.add(document1);
list.add(document2);
list.add(document3);
list.add(document4);
list.add(document5);
collection.insertMany(list);
System.out.println("Documents Inserted");
// 削除前のコレクション内容を表示
System.out.println("Contents of the collection:");
FindIterable<Document> iterDoc = collection.find();
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 複数ドキュメントの一括削除(cityがDelhiのものを削除)
Bson filter = new Document("city", "Delhi");
collection.deleteMany(filter);
System.out.println("Document deleted successfully...");
// 削除後の残りドキュメントを表示
iterDoc = collection.find();
System.out.println("Remaining documents:");
it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}補足:MongoDB Javaドライバーのバージョン3.7以降では、new MongoClient()コンストラクタは非推奨となっており、MongoClients.create("mongodb://localhost:27017")の使用が推奨されています。
実行結果
Documents Inserted
Contents of the collection:
Document{{_id=5e896b042e4a2f3badebddae, name=Ram, age=26, city=Delhi}}
Document{{_id=5e896b042e4a2f3badebddaf, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e896b042e4a2f3badebddb0, name=Rhim, age=30, city=Delhi}}
Document{{_id=5e896b042e4a2f3badebddb1, name=Radha, age=45, city=Delhi}}
Document{{_id=5e896b042e4a2f3badebddb2, name=Sarmista, age=35, city=Mumbai}}
Document deleted successfully...
Remaining documents:
Document{{_id=5e896b042e4a2f3badebddaf, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e896b042e4a2f3badebddb2, name=Sarmista, age=35, city=Mumbai}}実行結果を見ると、「city」が「Delhi」である3件のドキュメント(Ram、Rhim、Radha)が削除され、残りの2件(Robert、Sarmista)だけがコレクションに残っていることが確認できます。このように、deleteMany()に適切なフィルターを渡すことで、条件に合致するドキュメントを効率的に一括削除できます。
-
複数のWord文書を1つに結合する方法|「オブジェクトの挿入」で簡単にマージする手順
Wordを頻繁に使っている方なら、複数のWord文書を1つのファイルにまとめたい場面に遭遇したことがあるはずです。実はこの操作、Wordなら難しくなく行えますが、その方法はあまり直感的ではありません。 これほど高度な処理ができるソフトなのだから、Microsoftが「文書の結合」機能を標準搭載してくれればいいのにと思うこともありますよね。そこで本記事では、複数のWord文書をすばやく簡単に1つにまとめる方法をご紹介します。 対応バージョンと注意点 まず押さえておきたいのは、この手順がOffice 2007から2016までのほぼすべてのバージョンで使えるという点です。また、筆者の検証では、文書を
-
【Word】複数のドキュメントのコメントを1つに統合・マージする方法
Microsoft Wordで複数のドキュメントに散らばったコメントを統合(マージ)したいと思ったことはありませんか?実は、Wordに搭載されている「組み合わせ」機能を使えば、複数の文書に書き込まれたコメントをすべて結合し、新しいドキュメントとして作成することが可能です。この記事では、すべてのコメントを1つの文書にまとめるための手順をわかりやすく解説します。 たとえば、編集対象の文書に対していくつかの変更を加え、その過程で新たにコメントを書き込んだり、既存のコメントに返信したりしたとしましょう。こうした新しいコメントを既存のコメントと統合し、新規または改訂版のドキュメントとして確認したいケー