sql >> Database >  >> NoSQL >> MongoDB

Controleer het bestaan ​​van verzamelingen in MongoDB

1. Overzicht

MongoDB is een NoSQL-database die de gegevensrecords opslaat als BSON documenten in een collectie. We kunnen meerdere databases hebben en elke database kan een of meer verzamelingen documenten hebben.

In tegenstelling tot relationele databases, creëert MongoDB de collectie met het ingevoegde document zonder dat een structuurdefinitie nodig is. In deze zelfstudie leren we verschillende manieren om het bestaan ​​van een verzameling te controleren. We gebruiken de collectionExists, createCollection, listCollectionNames, en tellen methode om het bestaan ​​van de collectie te controleren.

2. Database-connectiviteit

Om toegang te krijgen tot gegevens van een collectie, moeten we eerst een verbinding met de database opzetten. Laten we verbinding maken met de MongoDB-database die lokaal op onze machine draait.

2.1. Maak verbinding met de MongoClient

MongoClient  is een Java-klasse die wordt gebruikt om een ​​verbinding tot stand te brengen met de MongoDB-instantie:

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

Hier maken we verbinding met MongoDB die draait op poort standaard poort 27017 op localhost.

2.2. Verbinding maken met database

Laten we nu de MongoClient . gebruiken object om toegang te krijgen tot de database. Er zijn twee methoden om toegang te krijgen tot de database met behulp van de MongoClient .

Eerst gebruiken we de getDatabase methode om toegang te krijgen tot de baeldung databank:

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

We kunnen ook de getDB . gebruiken methode van Mongo Java-stuurprogramma om verbinding te maken met de database:

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

De getDB  methode is verouderd, daarom wordt het niet aanbevolen om te gebruiken.

Tot nu toe hebben we een verbinding met MongoDB opgezet met behulp van de MongoClient en verder verbonden met de baeldung database.

Laten we dieper ingaan op verschillende benaderingen om het bestaan ​​van een verzameling in MongoDB te controleren.

3. De DB gebruiken Klasse

De MongoDB Java Driver biedt zowel synchrone als asynchrone methodeaanroepen. Om verbinding te maken met de database, hoeven we alleen de databasenaam op te geven. Als de database niet aanwezig is, zal MongoDB er automatisch een aanmaken.

De collectieBestaat methode kan worden gebruikt om te controleren of een collectie aanwezig is of niet:

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

Hier, de collectieBestaat methode retourneert true als de verzameling bestaat, anders false.

De com.mongodb.DB API van het MongoDB Java-stuurprogramma is verouderd vanaf versie 3.x, maar is nog steeds toegankelijk. Vandaar dat de DB class wordt niet aanbevolen voor een nieuw project.

4. De MongoDatabase gebruiken Klasse

De com.mongodb.client.MongoDatabase is een bijgewerkte API voor Mongo 3.x en hoger. In tegenstelling tot de DB-klasse, biedt de MongoDatabase-klasse geen specifieke methode om het bestaan ​​van een verzameling te controleren. Maar er zijn verschillende methoden die we kunnen gebruiken om de gewenste resultaten te krijgen.

4.1. De createCollection . gebruiken Methode

De createCollection methode creëert een nieuwe collectie in MongoDB. Maar we kunnen het ook gebruiken om te controleren of een collectie bestaat of niet:

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

De bovenstaande code maakt een nieuwe verzameling "student" als het nog niet in de database aanwezig is. De createCollection methode zal een uitzondering genereren voor het geval de verzameling al bestaat.

Deze aanpak wordt niet aanbevolen omdat er een nieuwe verzameling in de database wordt gemaakt.

4.2. De listCollectionNames gebruiken Methode

De listCollectionNames methode geeft alle collectienamen in de database weer. Daarom kunnen we deze methode gebruiken om het probleem van het bestaan ​​van een collectie op te lossen.

Laten we nu eens kijken naar een voorbeeldcode van listCollectionNames methode met behulp van de Java-stuurprogrammacode:

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 hebben we de lijst met alle collectienamen in de database baeldung. . herhaald Voor elk exemplaar matchen we de naam van de verzamelingsreeks met de testCollectionName . Het retourneert true bij een succesvolle match, false anders.

4.3. De telling gebruiken Methode

De telling methode van de MongoCollection telt het aantal documenten in een collectie.

Als tijdelijke oplossing kunnen we deze methode gebruiken om te controleren op het bestaan ​​van de collectie. Hier is het Java-codefragment voor hetzelfde:

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

Deze methode werkt niet als een verzameling bestaat zonder gegevens. In dat geval wordt 0 geretourneerd, maar de verzameling bestaat met lege gegevens.


  1. Mongo-query-uitvoer afdrukken naar een bestand terwijl deze zich in de mongo-shell bevindt

  2. Retourneer resultaten mangoest in zoekopdracht naar een variabele

  3. redis winkel 128 bit nummer

  4. PHP opstarten Kan dynamische bibliotheek php_mongo.dll niet laden