MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Controlla l'esistenza della raccolta in MongoDB

1. Panoramica

MongoDB è un database NoSQL che memorizza i record di dati come BSON documenti in una raccolta. Possiamo avere più database e ogni database può avere una o più raccolte di documenti.

A differenza dei database relazionali, MongoDB crea la collezione con il documento inserito senza la necessità di alcuna definizione della struttura. In questo tutorial impareremo vari modi per verificare l'esistenza di una raccolta. Useremo collectionExists, createCollection, listCollectionNames, e contare metodo per verificare l'esistenza della collezione.

2. Connettività database

Per poter accedere a qualsiasi dato di una raccolta, dobbiamo prima stabilire una connessione con il database. Connettiamoci al database MongoDB che è in esecuzione localmente sulla nostra macchina.

2.1. Crea connessione utilizzando MongoClient

MongoClient  è una classe Java utilizzata per stabilire una connessione con l'istanza MongoDB:

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

Qui ci stiamo connettendo a MongoDB che è in esecuzione sulla porta predefinita 27017 su localhost.

2.2. Collegati al database

Ora utilizziamo il MongoClient oggetto per accedere al database. Esistono due metodi per accedere al database utilizzando MongoClient .

Per prima cosa, utilizzeremo getDatabase metodo per accedere al baeldung banca dati:

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

Possiamo anche usare getDB metodo del driver Mongo Java per la connessione al database:

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

Il getDB  il metodo è deprecato, quindi non è consigliabile utilizzarlo.

Finora, abbiamo stabilito una connessione con MongoDB utilizzando MongoClient e ulteriormente connesso a baeldung banca dati.

Analizziamo in profondità diversi approcci per verificare l'esistenza di una raccolta in MongoDB.

3. Utilizzando il DB Classe

Il driver MongoDB Java fornisce chiamate al metodo sia sincrone che asincrone. Per connettersi al database, dobbiamo solo specificare il nome del database. Se il database non è presente, MongoDB ne creerà uno automaticamente.

La raccolta esiste metodo può essere utilizzato per verificare se una collezione è presente o meno:

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

Qui, la raccolta esiste il metodo restituirà true se la collezione esiste, false altrimenti.

Il com.mongodb.DB L'API del driver MongoDB Java è deprecata dalla versione 3.x, ma è ancora accessibile. Quindi, il DB non è consigliabile utilizzare la classe per un nuovo progetto.

4. Utilizzando il MongoDatabase Classe

Il com.mongodb.client.MongoDatabase è un'API aggiornata per Mongo 3.x e versioni successive. A differenza della classe DB, la classe MongoDatabase non fornisce alcun metodo specifico per verificare l'esistenza di una raccolta. Ma ci sono vari metodi che possiamo usare per ottenere i risultati desiderati.

4.1. Utilizzando createCollection Metodo

La createCollection il metodo crea una nuova raccolta in MongoDB. Ma possiamo anche usarlo per verificare se esiste o meno una collezione:

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

Il codice sopra creerà una nuova raccolta "studente" se non è già presente nel database. La createCollection il metodo genererà un'eccezione nel caso in cui la raccolta esista già.

Questo approccio non è consigliato in quanto crea una nuova raccolta nel database.

4.2. Utilizzando listCollectionNames Metodo

Gli listCollectionNames il metodo elenca tutti i nomi delle raccolte nel database. Quindi, possiamo utilizzare questo metodo per risolvere il problema dell'esistenza della raccolta.

Esaminiamo ora un codice di esempio di listCollectionNames metodo utilizzando il codice del driver 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);

Qui, abbiamo ripetuto l'elenco di tutti i nomi delle raccolte nel database baeldung. Per ogni occorrenza, abbiniamo il nome della stringa di raccolta a testCollectionName . Restituirà vero in una corrispondenza riuscita, falso altrimenti.

4.3. Utilizzando il conteggio Metodo

Il conte metodo della MongoCollection conta il numero di documenti presenti in una collezione.

Come soluzione alternativa, possiamo utilizzare questo metodo per verificare l'esistenza della raccolta. Ecco lo snippet di codice Java per lo stesso:

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

Questo metodo non funziona se esiste una raccolta senza dati. In tal caso, restituirà 0, ma la raccolta esiste con dati vuoti.