sql >> Base de Datos >  >> NoSQL >> MongoDB

Comprobar la existencia de la colección en MongoDB

1. Resumen

MongoDB es una base de datos NoSQL que almacena los registros de datos como BSON documentos en una colección. Podemos tener múltiples bases de datos, y cada base de datos puede tener una o más colecciones de documentos.

A diferencia de las bases de datos relacionales, MongoDB crea la colección con el documento insertado sin necesidad de definición de estructura alguna. En este tutorial, aprenderemos varias formas de verificar la existencia de una colección. Usaremos collectionExists, createCollection, listCollectionNames, y contar método para verificar la existencia de la colección.

2. Conectividad de base de datos

Para acceder a cualquier dato de una colección, primero debemos establecer una conexión con la base de datos. Conectémonos a la base de datos MongoDB que se ejecuta localmente en nuestra máquina.

2.1. Crear conexión utilizando el MongoClient

Cliente Mongo  es una clase de Java utilizada para establecer una conexión con la instancia de MongoDB:

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

Aquí, nos estamos conectando a MongoDB que se ejecuta en el puerto predeterminado 27017 en localhost.

2.2. Conectarse a la base de datos

Ahora, usemos el MongoClient objeto para acceder a la base de datos. Hay dos métodos para acceder a la base de datos usando el MongoClient .

Primero, usaremos el getDatabase método para acceder al baeldung base de datos:

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

También podemos usar el getDB método del controlador Mongo Java para conectarse a la base de datos:

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

El getDB  El método está en desuso, por lo que no se recomienda su uso.

Hasta ahora, hemos configurado una conexión con MongoDB utilizando MongoClient y nos hemos conectado a baeldung base de datos.

Profundicemos en diferentes enfoques para comprobar la existencia de una colección en MongoDB.

3. Uso de la BD Clase

El controlador Java de MongoDB proporciona llamadas a métodos síncronos y asíncronos. Para conectarnos a la base de datos, solo necesitamos especificar el nombre de la base de datos. Si la base de datos no está presente, MongoDB creará una automáticamente.

La colecciónExiste El método se puede utilizar para comprobar si una colección está presente o no:

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

Aquí, la colecciónExiste el método devolverá verdadero si la colección existe, false en caso contrario.

El com.mongodb.DB La API del controlador MongoDB Java está obsoleta a partir de la versión 3.x, pero aún se puede acceder a ella. Por lo tanto, la BD no se recomienda usar la clase para un nuevo proyecto.

4. Uso de MongoDatabase Clase

La com.mongodb.client.MongoDatabase es una API actualizada para Mongo 3.xy superior. A diferencia de la clase DB, la clase MongoDatabase no proporciona ningún método específico para verificar la existencia de una colección. Pero existen varios métodos que podemos usar para obtener los resultados deseados.

4.1. Uso de createCollection Método

La createCollection El método crea una nueva colección en MongoDB. Pero también podemos usarlo para verificar si existe una colección o no:

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

El código anterior creará una nueva colección "estudiante" si aún no está presente en la base de datos. La createCollection arrojará una excepción en caso de que la colección ya exista.

Este enfoque no se recomienda ya que crea una nueva colección en la base de datos.

4.2. Uso de listCollectionNames Método

Los listCollectionNames El método enumera todos los nombres de las colecciones en la base de datos. Por lo tanto, podemos usar este método para resolver el problema de la existencia de la colección.

Veamos ahora un código de ejemplo de listCollectionNames método usando el código del controlador 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);

Aquí, hemos iterado sobre la lista de todos los nombres de colección en la base de datos baeldung. Para cada ocurrencia, hacemos coincidir el nombre de la cadena de la colección con el testCollectionName . Devolverá verdadero en una coincidencia exitosa, falso de lo contrario.

4.3. Uso del conteo Método

El contar método de MongoCollection cuenta el número de documentos presentes en una colección.

Como solución alternativa, podemos usar este método para verificar la existencia de la colección. Aquí está el fragmento de código Java para el mismo:

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 no funciona si existe una colección sin datos. En ese caso, devolverá 0, pero la colección existe con datos vacíos.