1. Översikt
MongoDB är en NoSQL-databas som lagrar dataposterna som BSON dokument till en samling. Vi kan ha flera databaser, och varje databas kan ha en eller flera samlingar av dokument.
Till skillnad från relationsdatabaser skapar MongoDB samlingen med det infogade dokumentet utan behov av någon strukturdefinition. I den här handledningen kommer vi att lära oss olika sätt att kontrollera förekomsten av en samling. Vi använder collectionExists, createCollection, listCollectionNames, och räkna metod för att kontrollera samlingens existens.
2. Databasanslutning
För att komma åt data från en samling måste vi först upprätta en anslutning till databasen. Låt oss ansluta till MongoDB-databasen som körs lokalt på vår maskin.
2.1. Skapa anslutning med MongoClient
MongoClient är en Java-klass som används för att upprätta en anslutning med MongoDB-instansen:
MongoClient mongoClient = new MongoClient("localhost", 27017);
Här ansluter vi till MongoDB som körs på port standardport 27017 på localhost.
2.2. Anslut till databas
Låt oss nu använda MongoClient objekt för att komma åt databasen. Det finns två sätt att komma åt databasen med MongoClient .
Först använder vi getDatabase metod för att komma åt baeldung databas:
MongoDatabase database = mongoClient.getDatabase("baeldung");
Vi kan också använda getDB metod för Mongo Java-drivrutin för att ansluta till databasen:
DB db = mongoClient.getDB("baeldung");
getDB metoden är föråldrad, därför rekommenderas den inte att använda.
Hittills har vi skapat en anslutning till MongoDB med MongoClient och vidare ansluten till baeldung databas.
Låt oss djupdyka i olika metoder för att kontrollera att det finns en samling i MongoDB.
3. Använda DB Klass
MongoDB Java Driver tillhandahåller både synkrona och asynkrona metodanrop. För att kunna ansluta till databasen behöver vi bara ange databasnamnet. Om databasen inte finns kommer MongoDB automatiskt att skapa en.
samlingen finns metod kan användas för att kontrollera om en samling finns eller inte:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));
Här finns samlingen metoden returnerar true om samlingen finns, falsk annars.
com.mongodb.DB API för MongoDB Java-drivrutinen är utfasad från version 3.x, men den är fortfarande tillgänglig. Därför DB klass rekommenderas inte att använda för ett nytt projekt.
4. Använda MongoDatabasen Klass
com.mongodb.client.MongoDatabasen är ett uppdaterat API för Mongo 3.x och högre. Till skillnad från DB-klassen tillhandahåller MongoDatabase-klassen ingen specifik metod för att kontrollera förekomsten av en samling. Men det finns olika metoder som vi kan använda för att få önskat resultat.
4.1. Använda createCollection Metod
createCollection metod skapar en ny samling i MongoDB. Men vi kan också använda den för att kontrollera om en samling finns eller inte:
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");
}
Koden ovan skapar en ny samling "student" om den inte redan finns i databasen. createCollection metoden ger ett undantag om samlingen redan finns.
Det här tillvägagångssättet rekommenderas inte eftersom det skapar en ny samling i databasen.
4.2. Använda listCollectionNames Metod
listCollectionNames metod listar alla samlingsnamn i databasen. Därför kan vi använda den här metoden för att lösa frågan om insamlingsexistens.
Låt oss nu titta på en exempelkod för listCollectionNames metod som använder Java-drivrutinskoden:
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);
Här har vi itererat över listan över alla samlingsnamn i databasen baeldung. För varje förekomst matchar vi samlingssträngens namn med testCollectionName . Det kommer att returnera true på en lyckad match, false annars.
4.3. Med hjälp av räkningen Metod
räkningen metoden för MongoCollection räknar antalet dokument som finns i en samling.
Som en lösning kan vi använda den här metoden för att kontrollera om samlingen finns. Här är Java-kodavsnittet för detsamma:
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);
Den här metoden fungerar inte om det finns en samling utan data, i så fall kommer den att returnera 0, men samlingen finns med tomma data.