1. Przegląd
MongoDB to baza danych NoSQL, która przechowuje rekordy danych jako BSON dokumenty do kolekcji. Możemy mieć wiele baz danych, a każda baza danych może mieć jeden lub więcej zbiorów dokumentów.
W przeciwieństwie do relacyjnych baz danych MongoDB tworzy kolekcję z wstawionym dokumentem bez konieczności definiowania struktury. W tym samouczku nauczymy się różnych sposobów sprawdzania istnienia kolekcji. Użyjemy collectionExists, createCollection, listCollectionNames, ilicz metoda sprawdzania istnienia kolekcji.
2. Łączność z bazą danych
Aby uzyskać dostęp do dowolnych danych kolekcji, musimy najpierw nawiązać połączenie z bazą danych. Połączmy się z bazą danych MongoDB, która działa lokalnie na naszym komputerze.
2.1. Utwórz połączenie za pomocą MongoClient
MongoClient to klasa Java używana do nawiązywania połączenia z instancją MongoDB:
MongoClient mongoClient = new MongoClient("localhost", 27017);
Tutaj łączymy się z MongoDB, które działa na domyślnym porcie portu 27017 na hoście lokalnym.
2.2. Połącz z bazą danych
Teraz użyjmy MongoClient obiekt, aby uzyskać dostęp do bazy danych. Istnieją dwie metody dostępu do bazy danych za pomocą MongoClient .
Najpierw użyjemy getDatabase metoda dostępu do baeldung baza danych:
MongoDatabase database = mongoClient.getDatabase("baeldung");
Możemy również użyć getDB metoda połączenia sterownika Mongo Java z bazą danych:
DB db = mongoClient.getDB("baeldung");
getDB metoda jest przestarzała, dlatego nie zaleca się jej używania.
Do tej pory nawiązaliśmy połączenie z MongoDB za pomocą MongoClient, a następnie połączyliśmy się z baeldung baza danych.
Przyjrzyjmy się różnym podejściom, aby sprawdzić istnienie kolekcji w MongoDB.
3. Korzystanie z DB Klasa
Sterownik Java MongoDB zapewnia zarówno synchroniczne, jak i asynchroniczne wywołania metod. Aby połączyć się z bazą danych, wystarczy podać nazwę bazy danych. Jeśli baza danych nie jest obecna, MongoDB automatycznie ją utworzy.
kolekcja istnieje metoda może być użyta do sprawdzenia, czy kolekcja jest obecna, czy nie:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));
Tutaj kolekcjaIstnieje metoda zwróci prawdę jeśli kolekcja istnieje, w przeciwnym razie fałsz.
com.mongodb.DB Interfejs API sterownika MongoDB Java jest przestarzały od wersji 3.x, ale nadal jest dostępny. Stąd DB klasa nie jest zalecana do użycia w nowym projekcie.
4. Korzystanie z Bazy danych Mongo Klasa
com.mongodb.client.MongoDatabase to zaktualizowany interfejs API dla Mongo 3.x i nowszych. W przeciwieństwie do klasy DB, klasa MongoDatabase nie udostępnia żadnej konkretnej metody sprawdzania istnienia kolekcji. Istnieją jednak różne metody, których możemy użyć, aby uzyskać pożądane rezultaty.
4.1. Korzystanie z createCollection Metoda
createCollection Metoda tworzy nową kolekcję w MongoDB. Ale możemy go również użyć do sprawdzenia, czy kolekcja istnieje, czy nie:
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");
}
Powyższy kod utworzy nową kolekcję „student” jeśli nie jest już obecny w bazie danych. createCollection metoda zgłosi wyjątek w przypadku, gdy kolekcja już istnieje.
To podejście nie jest zalecane, ponieważ tworzy nową kolekcję w bazie danych.
4.2. Korzystanie z listCollectionNames Metoda
listCollectionNames Metoda wyświetla listę wszystkich nazw kolekcji w bazie danych. Dlatego możemy użyć tej metody do rozwiązania problemu istnienia kolekcji.
Przyjrzyjmy się teraz przykładowemu kodowi listCollectionNames metoda przy użyciu kodu sterownika 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);
Tutaj przejrzeliśmy listę wszystkich nazw kolekcji w bazie danych baeldung. Dla każdego wystąpienia dopasowujemy nazwę ciągu kolekcji do testCollectionName . Zwróci prawda w przypadku udanego dopasowania, fałsz inaczej.
4.3. Korzystanie z liczenia Metoda
liczba metoda MongoCollection zlicza liczbę dokumentów znajdujących się w kolekcji.
Jako obejście możemy użyć tej metody do sprawdzenia istnienia kolekcji. Oto fragment kodu Java dla tego samego:
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);
Ta metoda nie działa, jeśli kolekcja istnieje bez żadnych danych. W takim przypadku zwróci 0, ale kolekcja istnieje z pustymi danymi.