MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Verifique a existência da coleção no MongoDB

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.