MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Vérifier l'existence de la collection dans MongoDB

1. Présentation

MongoDB est une base de données NoSQL qui stocke les enregistrements de données en tant que BSON documents dans une collection. Nous pouvons avoir plusieurs bases de données, et chaque base de données peut avoir une ou plusieurs collections de documents.

Contrairement aux bases de données relationnelles, MongoDB crée la collection avec le document inséré sans avoir besoin d'aucune définition de structure. Dans ce didacticiel, nous allons apprendre différentes manières de vérifier l'existence d'une collection. Nous utiliserons collectionExists, createCollection, listCollectionNames, et compter méthode pour vérifier l'existence de la collection.

2. Connectivité de la base de données

Afin d'accéder à toutes les données d'une collection, nous devons d'abord établir une connexion avec la base de données. Connectons-nous à la base de données MongoDB qui s'exécute localement sur notre machine.

2.1. Créer une connexion à l'aide de MongoClient

MongoClient  est une classe Java utilisée pour établir une connexion avec l'instance MongoDB :

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

Ici, nous nous connectons à MongoDB qui s'exécute sur le port par défaut 27017 sur localhost.

2.2. Se connecter à la base de données

Maintenant, utilisons le MongoClient objet pour accéder à la base de données. Il existe deux méthodes pour accéder à la base de données à l'aide de MongoClient .

Tout d'abord, nous allons utiliser getDatabase méthode pour accéder au baeldung base de données :

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

Nous pouvons également utiliser le getDB méthode du pilote Java Mongo pour se connecter à la base de données :

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

Le getDB  est obsolète, il n'est donc pas recommandé de l'utiliser.

Jusqu'à présent, nous avons établi une connexion avec MongoDB en utilisant MongoClient et en outre connecté au baeldung base de données.

Plongeons en profondeur dans différentes approches pour vérifier l'existence d'une collection dans MongoDB.

3. Utilisation de la base de données Classe

Le pilote Java MongoDB fournit des appels de méthode synchrones et asynchrones. Pour se connecter à la base de données, il suffit de spécifier le nom de la base de données. Si la base de données n'est pas présente, MongoDB en créera une automatiquement.

La collectionExiste peut être utilisée pour vérifier si une collection est présente ou non :

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

Ici, la collectionExists la méthode renverra true si la collection existe, false sinon.

Le com.mongodb.DB L'API du pilote Java MongoDB est obsolète à partir de la version 3.x, mais elle est toujours accessible. Par conséquent, la DB Il n'est pas recommandé d'utiliser la classe pour un nouveau projet.

4. Utiliser la MongoDatabase Classe

La com.mongodb.client.MongoDatabase est une API mise à jour pour Mongo 3.x et supérieur. Contrairement à la classe DB, la classe MongoDatabase ne fournit aucune méthode spécifique pour vérifier l'existence d'une collection. Mais, il existe différentes méthodes que nous pouvons utiliser pour obtenir les résultats souhaités.

4.1. Utilisation de createCollection Méthode

La createCollection La méthode crée une nouvelle collection dans MongoDB. Mais on peut aussi l'utiliser pour vérifier si une collection existe ou non :

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

Le code ci-dessus créera une nouvelle collection "étudiant" s'il n'est pas déjà présent dans la base de données. La createCollection lèvera une exception si la collection existe déjà.

Cette approche n'est pas recommandée car elle crée une nouvelle collection dans la base de données.

4.2. Utilisation de listCollectionNames Méthode

Les listCollectionNames La méthode répertorie tous les noms de collections dans la base de données. Par conséquent, nous pouvons utiliser cette méthode pour résoudre le problème de l'existence de la collection.

Regardons maintenant un exemple de code de listCollectionNames méthode utilisant le code du pilote 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);

Ici, nous avons parcouru la liste de tous les noms de collection dans la base de données baeldung. Pour chaque occurrence, nous faisons correspondre le nom de la chaîne de collection avec le testCollectionName . Il retournera true en cas de correspondance réussie, faux sinon.

4.3. Utilisation du compte Méthode

Le compte méthode de la MongoCollection compte le nombre de documents présents dans une collection.

Comme solution de contournement, nous pouvons utiliser cette méthode pour vérifier l'existence de la collection. Voici l'extrait de code Java correspondant :

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

Cette méthode ne fonctionne pas si une collection existe sans aucune donnée. Dans ce cas, elle renverra 0, mais la collection existe avec des données vides.