MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Überprüfen Sie die Existenz der Sammlung in MongoDB

1. Übersicht

MongoDB ist eine NoSQL-Datenbank, die die Datensätze als BSON speichert Dokumente in eine Sammlung. Wir können mehrere Datenbanken haben, und jede Datenbank kann eine oder mehrere Sammlungen von Dokumenten enthalten.

Im Gegensatz zu relationalen Datenbanken erstellt MongoDB die Sammlung mit dem eingefügten Dokument, ohne dass eine Strukturdefinition erforderlich ist. In diesem Tutorial lernen wir verschiedene Möglichkeiten kennen, um die Existenz einer Sammlung zu überprüfen. Wir verwenden die collectionExists, createCollection, listCollectionNames, undzählen Methode, um die Existenz der Sammlung zu überprüfen.

2. Datenbankkonnektivität

Um auf Daten einer Sammlung zugreifen zu können, müssen wir zunächst eine Verbindung mit der Datenbank herstellen. Stellen wir eine Verbindung zur MongoDB-Datenbank her, die lokal auf unserem Computer ausgeführt wird.

2.1. Erstellen Sie eine Verbindung mit dem MongoClient

MongoClient  ist eine Java-Klasse, die verwendet wird, um eine Verbindung mit der MongoDB-Instanz herzustellen:

MongoClient mongoClient = new MongoClient("localhost", 27017);

Hier stellen wir eine Verbindung zu MongoDB her, das auf dem Standardport 27017 auf localhost ausgeführt wird.

2.2. Mit Datenbank verbinden

Lassen Sie uns nun den MongoClient verwenden Objekt für den Zugriff auf die Datenbank. Es gibt zwei Methoden, um mit dem MongoClient auf die Datenbank zuzugreifen .

Zuerst verwenden wir die getDatabase Methode für den Zugriff auf baeldung Datenbank:

MongoDatabase database = mongoClient.getDatabase("baeldung");

Wir können auch die getDB verwenden Methode des Mongo-Java-Treibers zur Verbindung mit der Datenbank:

DB db = mongoClient.getDB("baeldung");

Die getDB  Methode ist veraltet, daher wird ihre Verwendung nicht empfohlen.

Bisher haben wir über den MongoClient eine Verbindung mit MongoDB aufgebaut und uns weiter mit der baeldung verbunden Datenbank.

Lassen Sie uns tief in verschiedene Ansätze eintauchen, um die Existenz einer Sammlung in MongoDB zu überprüfen.

3. Verwenden der DB Klasse

Der MongoDB-Java-Treiber bietet sowohl synchrone als auch asynchrone Methodenaufrufe. Um eine Verbindung zur Datenbank herzustellen, müssen wir nur den Datenbanknamen angeben. Wenn die Datenbank nicht vorhanden ist, erstellt MongoDB automatisch eine.

Die SammlungExists Methode kann verwendet werden, um zu prüfen, ob eine Sammlung vorhanden ist oder nicht:

MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));

Hier ist die collectionExists Methode gibt true zurück wenn die Sammlung existiert, andernfalls false.

Die com.mongodb.DB Die API des MongoDB-Java-Treibers ist ab Version 3.x veraltet, aber sie ist weiterhin zugänglich. Daher die DB Klasse wird nicht für ein neues Projekt empfohlen.

4. Verwenden der MongoDatabase Klasse

Die com.mongodb.client.MongoDatabase ist eine aktualisierte API für Mongo 3.x und höher. Anders als die DB-Klasse stellt die MongoDatabase-Klasse keine spezifische Methode bereit, um das Vorhandensein einer Sammlung zu überprüfen. Es gibt jedoch verschiedene Methoden, mit denen wir die gewünschten Ergebnisse erzielen können.

4.1. Verwenden der createCollection Methode

Die createCollection -Methode erstellt eine neue Sammlung in MongoDB. Aber wir können damit auch prüfen, ob eine Sammlung existiert oder nicht:

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");
}

Der obige Code erstellt eine neue Sammlung „Student“ falls es noch nicht in der Datenbank vorhanden ist. Die createCollection -Methode löst eine Ausnahme aus, falls die Sammlung bereits vorhanden ist.

Dieser Ansatz wird nicht empfohlen, da er eine neue Sammlung in der Datenbank erstellt.

4.2. Verwenden der listCollectionNames Methode

Die listCollectionNames -Methode listet alle Sammlungsnamen in der Datenbank auf. Daher können wir diese Methode verwenden, um das Problem der Sammlungsexistenz zu lösen.

Sehen wir uns nun einen Beispielcode von listCollectionNames an Methode mit dem Java-Treibercode:

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);

Hier haben wir die Liste aller Sammlungsnamen in der Datenbank baeldung. durchlaufen Für jedes Vorkommen gleichen wir den Namen der Sammlungszeichenfolge mit dem testCollectionName ab . Es wird true zurückgegeben bei erfolgreicher Übereinstimmung false andernfalls.

4.3. Verwenden der Zählung Methode

Die Zählung Methode der MongoCollection zählt die Anzahl der in einer Sammlung vorhandenen Dokumente.

Als Problemumgehung können wir diese Methode verwenden, um die Existenz der Sammlung zu überprüfen. Hier ist das Java-Code-Snippet dafür:

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);

Diese Methode funktioniert nicht, wenn eine Sammlung ohne Daten existiert. In diesem Fall gibt sie 0 zurück, aber die Sammlung existiert mit leeren Daten.