Javaを使用してMongoDBのドキュメントを削除するには?基本とサンプルコード解説
MongoDBでは、既存のコレクションからドキュメントを削除する際に remove() メソッドを使用できます。本記事では、MongoDBシェルでの削除方法と、Javaプログラムからドキュメントを削除する方法を順を追って解説します。
構文
db.coll.remove(削除条件)
各要素の意味は以下のとおりです。
db: 操作対象のデータベース
coll: ドキュメントを削除したいコレクション名
例
MongoDBデータベースに students というコレクションがあり、次のドキュメントが登録されていると仮定します。
{name:"Ram", age:26, city:"Mumbai"}
{name:"Roja", age:28, city:"Hyderabad"}
{name:"Ramani", age:35, city:"Delhi"}
次のクエリを実行すると、name フィールドの値が Ram であるドキュメントが削除されます。
> db.students.remove({'name': 'Ram'})
WriteResult({ "nRemoved" : 1 })
> db.students.find()
{ "_id" : ObjectId("5e4161"), "name" : "Roja", "age" : 28, "city" : "Hyderabad" }
{ "_id" : ObjectId("5e8161"), "name" : "Ramani", "age" : 35, "city" : "Delhi" }
なお、remove() メソッドは現在非推奨(deprecated)となっており、最新の環境では後述の deleteOne() / deleteMany() の使用が推奨されています。
Javaプログラムによる削除
Javaでコレクションからドキュメントを削除するには、com.mongodb.client.MongoCollection インターフェースの deleteOne() メソッドを使用します。条件に一致するすべてのドキュメントを一括で削除したい場合は、deleteMany() メソッドを利用してください。
JavaプログラムでMongoDBのドキュメントを削除するには、以下の手順に従います。
システムにMongoDBがインストールされていることを確認する
Javaプロジェクトのpom.xmlファイルに、以下の依存関係を追加する
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.2</version>
</dependency>
MongoClientクラスをインスタンス化して、MongoDBクライアントを作成する
getDatabase() メソッドを使用してデータベースに接続する
getCollection() メソッドを使用して、ドキュメントを削除したいコレクションのオブジェクトを取得する
deleteOne() メソッドを呼び出して、目的のドキュメントを削除する
サンプルコード
先ほどと同じ students コレクションから name が「Ram」のドキュメントを1件削除し、残りのドキュメントを表示するJavaプログラムは以下のとおりです。
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import java.util.Iterator;
import org.bson.Document;
import com.mongodb.MongoClient;
public class DeletingDocuments {
public static void main( String args[] ) {
// MongoDBクライアントの作成
MongoClient mongo = new MongoClient( "localhost" , 27017 );
// データベースへの接続
MongoDatabase database = mongo.getDatabase("myDatabase");
// コレクションの取得
MongoCollection<Document> collection = database.getCollection("students");
// ドキュメントの削除
collection.deleteOne(Filters.eq("name", "Ram"));
System.out.println("ドキュメントを正常に削除しました...");
// 削除後のドキュメントを取得して表示
FindIterable<Document> iterDoc = collection.find();
System.out.println("残りのドキュメント:");
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
実行結果
ドキュメントを正常に削除しました...
残りのドキュメント:
Document{{_id=5e871141a89ad86b7b8ad22a, name=Roja, age=28, city=Hyderabad}}
Document{{_id=5e871141a89ad86b7b8ad22b, name=Ramani, age=35, city=Delhi}}
このように、Filters.eq() で削除条件を指定し、deleteOne() を呼び出すだけで、該当するドキュメントを簡単に削除できます。条件に一致するドキュメントが複数存在する場合でも、deleteOne() は最初の1件のみを削除する点に注意してください。
-
JavaでMongoDBからデータを取得する際にドキュメントをスキップする方法
MongoDBコレクションからレコードを取得する際、skip()メソッドを使うと、検索結果の先頭から指定した件数のドキュメントを読み飛ばすことができます。Webアプリケーションのページネーション(ページ送り)機能などを実装する際に非常に便利なメソッドです。基本構文db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)JavaのMongoDBライブラリにも同名のskip()メソッドが用意されています。find()メソッドの実行結果に対してこのメソッドを呼び出し、引数として「スキップしたいレコード数」を表す整数値を渡すだけで、簡単にドキュメントをス
-
JavaでMongoDBデータベース内のすべてのコレクションを一覧表示する方法
MongoDBでは、show collections コマンドを使うことで、データベースに存在するすべてのコレクションの一覧を表示できます。 例 たとえば、MongoDBデータベースに以下のように3つのコレクションを作成したとします。 > use sampleDatabase switched to db sampleDatabase > db.createCollection(students) { ok : 1 } > db.createCollection(teachers) { ok : 1 } > db.createCollection(sample) { o