1. Visão geral
MongoDB é um banco de dados NoSQL que armazena os registros de dados como BSON documentos em uma coleção. Podemos ter vários bancos de dados e cada banco de dados pode ter uma ou mais coleções de documentos.
Diferentemente dos bancos de dados relacionais, o MongoDB cria a coleção com o documento inserido sem a necessidade de qualquer definição de estrutura. Neste tutorial, aprenderemos várias maneiras de verificar a existência de uma coleção. Usaremos collectionExists, createCollection, listCollectionNames, e contagem método para verificar a existência da coleção.
2. Conectividade de banco de dados
Para acessar qualquer dado de uma coleção, primeiro precisamos configurar uma conexão com o banco de dados. Vamos nos conectar ao banco de dados MongoDB que está sendo executado localmente em nossa máquina.
2.1. Criar conexão usando o MongoClient
MongoClient é uma classe Java usada para estabelecer uma conexão com a instância do MongoDB:
MongoClient mongoClient = new MongoClient("localhost", 27017);
Aqui, estamos nos conectando ao MongoDB que está sendo executado na porta padrão 27017 no host local.
2.2. Conectar ao banco de dados
Agora, vamos usar o MongoClient objeto para acessar o banco de dados. Existem dois métodos para acessar o banco de dados usando o MongoClient .
Primeiro, usaremos o getDatabase método para acessar o baeldung base de dados:
MongoDatabase database = mongoClient.getDatabase("baeldung");
Também podemos usar o getDB método do driver Mongo Java para se conectar ao banco de dados:
DB db = mongoClient.getDB("baeldung");
O getDB O método está obsoleto, portanto, não é recomendado usá-lo.
Até agora, configuramos uma conexão com o MongoDB usando o MongoClient e conectamos ainda mais ao baeldung base de dados.
Vamos mergulhar em diferentes abordagens para verificar a existência de uma coleção no MongoDB.
3. Como usar o DB Classe
O Driver Java do MongoDB fornece chamadas de método síncronas e assíncronas. Para se conectar ao banco de dados, precisamos apenas especificar o nome do banco de dados. Se o banco de dados não estiver presente, o MongoDB criará um automaticamente.
A coleçãoExiste pode ser usado para verificar se uma coleção está presente ou não:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));
Aqui, a coleçãoExiste O método retornará true se a coleção existir, false caso contrário.
O com.mongodb.DB A API do driver Java do MongoDB está obsoleta a partir da versão 3.x, mas ainda está acessível. Portanto, o DB class não é recomendado para uso em um novo projeto.
4. Como usar o MongoDatabase Classe
O com.mongodb.client.MongoDatabase é uma API atualizada para Mongo 3.xe superior. Ao contrário da classe DB, a classe MongoDatabase não fornece nenhum método específico para verificar a existência de uma coleção. Mas, existem vários métodos que podemos usar para obter os resultados desejados.
4.1. Como usar o createCollection Método
A createCollection O método cria uma nova coleção no MongoDB. Mas também podemos usá-lo para verificar se uma coleção existe ou não:
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");
}
O código acima criará uma nova coleção “aluno” se ainda não estiver presente no banco de dados. A createCollection lançará uma exceção caso a coleção já exista.
Essa abordagem não é recomendada, pois cria uma nova coleção no banco de dados.
4.2. Como usar os listCollectionNames Método
Os listCollectionNames O método lista todos os nomes de coleções no banco de dados. Portanto, podemos usar esse método para resolver a questão da existência da coleção.
Vamos agora examinar um código de exemplo de listCollectionNames método usando o código do 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);
Aqui, iteramos sobre a lista de todos os nomes de coleção no banco de dados baeldung. Para cada ocorrência, combinamos o nome da string de coleção com o testCollectionName . Ele retornará true em uma correspondência bem-sucedida, falso por outro lado.
4.3. Como usar a contagem Método
A conta método da MongoCollection conta o número de documentos presentes em uma coleção.
Como solução alternativa, podemos usar esse método para verificar a existência da coleção. Aqui está o trecho de código Java para o mesmo:
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);
Este método não funciona se existir uma coleção sem dados, nesse caso retornará 0, mas a coleção existe com dados vazios.