1。概要
MongoDBは、データレコードを BSONとして保存するNoSQLデータベースです。 コレクションへのドキュメント。複数のデータベースを持つことができ、各データベースには1つ以上のドキュメントのコレクションを含めることができます。
リレーショナルデータベースとは異なり、MongoDBは、構造を定義することなく、挿入されたドキュメントを使用してコレクションを作成します。このチュートリアルでは、コレクションの存在を確認するさまざまな方法を学習します。 collectionExists、createCollection、listCollectionNames、を使用します およびカウント コレクションの存在を確認する方法。
2。データベース接続
コレクションのデータにアクセスするには、最初にデータベースとの接続を設定する必要があります。私たちのマシンでローカルに実行されているMongoDBデータベースに接続しましょう。
2.1。 MongoClientを使用して接続を作成する
MongoClient MongoDBインスタンスとの接続を確立するために使用されるJavaクラスです:
MongoClient mongoClient = new MongoClient("localhost", 27017);
ここでは、ローカルホストのポートデフォルトポート27017で実行されているMongoDBに接続しています。
2.2。データベースに接続する
それでは、 MongoClientを使用してみましょう。 データベースにアクセスするためのオブジェクト。 MongoClientを使用してデータベースにアクセスする方法は2つあります。 。
まず、 getDatabaseを使用します baeldungにアクセスする方法 データベース:
MongoDatabase database = mongoClient.getDatabase("baeldung");
getDBを使用することもできます データベースに接続するためのMongoJavaドライバーの方法:
DB db = mongoClient.getDB("baeldung");
getDB メソッドは非推奨であるため、使用することはお勧めしません。
これまで、MongoClientを使用してMongoDBとの接続を設定し、さらに baeldungに接続しました。 データベース。
MongoDBにコレクションが存在するかどうかを確認するために、さまざまなアプローチを詳しく見ていきましょう。
3。 DBの使用 クラス
MongoDB Javaドライバーは、同期メソッド呼び出しと非同期メソッド呼び出しの両方を提供します。データベースに接続するには、データベース名を指定するだけです。 データベースが存在しない場合、MongoDBは自動的にデータベースを作成します。
collectionExists メソッドを使用して、コレクションが存在するかどうかを確認できます。
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));
ここで、 collectionExists メソッドはtrueを返します コレクションが存在する場合はfalse、そうでない場合はfalse。
com.mongodb.DB MongoDB JavaドライバーのAPIはバージョン3.xで廃止されましたが、引き続きアクセスできます。 したがって、 DB クラスを新しいプロジェクトに使用することはお勧めしません。
4。 MongoDatabaseを使用する クラス
com.mongodb.client.MongoDatabase Mongo3.x以降の更新されたAPIです。 DBクラスとは異なり、MongoDatabaseクラスは、コレクションの存在を確認するための特定のメソッドを提供しません。ただし、目的の結果を得るために使用できるさまざまな方法があります。
4.1。 createCollectionを使用する 方法
createCollection メソッドは、MongoDBに新しいコレクションを作成します。ただし、これを使用して、コレクションが存在するかどうかを確認することもできます。
String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
try {
database.createCollection(testCollectionName);
} catch (Exception exception) {
System.err.println("Collection:- "+testCollectionName +" already Exists");
}
上記のコードは、新しいコレクション「student」を作成します データベースにまだ存在していない場合。 createCollection コレクションがすでに存在する場合、メソッドは例外をスローします。
このアプローチはデータベースに新しいコレクションを作成するため、お勧めしません。
4.2。 listCollectionNamesを使用する 方法
listCollectionNames メソッドは、データベース内のすべてのコレクション名を一覧表示します。したがって、この方法を使用して、コレクションの存在の問題を解決できます。
ここで、 listCollectionNamesのサンプルコードを見てみましょう。 Javaドライバコードを使用するメソッド:
String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
boolean collectionExists = database.listCollectionNames()
.into(new ArrayList()).contains(testCollectionName);
System.out.println("collectionExists:- " + collectionExists);
ここでは、データベースbaeldung。内のすべてのコレクション名のリストを繰り返しました。 出現するたびに、コレクション文字列名を testCollectionNameと照合します。 。 trueを返します 一致が成功した場合、 false それ以外の場合。
4.3。 countを使用する 方法
カウント MongoCollectionのメソッド コレクションに存在するドキュメントの数をカウントします。
回避策として、このメソッドを使用してコレクションの存在を確認できます。同じもののJavaコードスニペットは次のとおりです。
String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
MongoCollection<Document> collection = database.getCollection(testCollectionName);
Boolean collectionExists = collection.count() > 0 ? true : false;
System.out.println("collectionExists:- " + collectionExists);
Boolean expectedStatus = false;
assertEquals(expectedStatus, collectionExists);
このメソッドは、データのないコレクションが存在する場合は機能しません。その場合、0が返されますが、コレクションは空のデータで存在します。