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

Tjek samlingseksistens i MongoDB

1. Oversigt

MongoDB er en NoSQL-database, der gemmer dataposterne som BSON dokumenter i en samling. Vi kan have flere databaser, og hver database kan have en eller flere samlinger af dokumenter.

I modsætning til relationelle databaser opretter MongoDB samlingen med det indsatte dokument uden behov for nogen strukturdefinition. I denne øvelse lærer vi forskellige måder at kontrollere eksistensen af ​​en samling på. Vi bruger collectionExists, createCollection, listCollectionNames, og tæller metode til at kontrollere samlingens eksistens.

2. Databaseforbindelse

For at få adgang til data fra en samling skal vi først oprette en forbindelse til databasen. Lad os oprette forbindelse til MongoDB-databasen, der kører lokalt på vores maskine.

2.1. Opret forbindelse ved hjælp af MongoClient

MongoClient  er en Java-klasse, der bruges til at etablere en forbindelse med MongoDB-instansen:

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

Her opretter vi forbindelse til MongoDB, der kører på portstandardport 27017 på localhost.

2.2. Opret forbindelse til database

Lad os nu bruge MongoClient objekt for at få adgang til databasen. Der er to metoder til at få adgang til databasen ved hjælp af MongoClient .

Først bruger vi getDatabasen metode til at få adgang til baeldung database:

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

Vi kan også bruge getDB metode for Mongo Java-driver til at oprette forbindelse til databasen:

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

getDB  metoden er forældet, og derfor anbefales den ikke at bruge.

Indtil videre har vi oprettet en forbindelse med MongoDB ved hjælp af MongoClient og yderligere forbundet til baeldung database.

Lad os dykke dybt ned i forskellige tilgange til at kontrollere eksistensen af ​​en samling i MongoDB.

3. Brug af DB Klasse

MongoDB Java Driver giver både synkrone og asynkrone metodekald. For at oprette forbindelse til databasen skal vi blot angive databasenavnet. Hvis databasen ikke er til stede, vil MongoDB automatisk oprette en.

Samlingen eksisterer metode kan bruges til at kontrollere, om en samling er til stede eller ej:

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

Her findes kollektionen metode vil returnere true hvis samlingen findes, ellers falsk.

com.mongodb.DB API af MongoDB Java-driveren er forældet fra version 3.x, men det er stadig tilgængeligt. Derfor er DB klasse anbefales ikke at bruge til et nyt projekt.

4. Brug af MongoDatabasen Klasse

com.mongodb.client.MongoDatabasen er en opdateret API til Mongo 3.x og nyere. I modsætning til DB-klassen giver MongoDatabase-klassen ikke nogen specifik metode til at kontrollere eksistensen af ​​en samling. Men der er forskellige metoder, som vi kan bruge til at få de ønskede resultater.

4.1. Brug af createCollection Metode

createCollection metoden opretter en ny samling i MongoDB. Men vi kan også bruge det til at kontrollere, om der findes en samling eller ej:

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

Ovenstående kode vil oprette en ny samling "elev" hvis den ikke allerede findes i databasen. createCollection metoden vil give en undtagelse, hvis samlingen allerede eksisterer.

Denne tilgang anbefales ikke, da den opretter en ny samling i databasen.

4.2. Brug af listenCollectionNames Metode

listensamlingsnavne metode viser alle samlingernes navne i databasen. Derfor kan vi bruge denne metode til at løse problemet med indsamlingseksistens.

Lad os nu se på et eksempel på en kode for listCollectionNames metode ved hjælp af Java-driverkoden:

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

Her har vi itereret over listen over alle samlingsnavne i databasen baeldung. For hver forekomst matcher vi samlingens strengnavn med testCollectionName . Det vil returnere true på et vellykket match, false ellers.

4.3. Brug af tæller Metode

tæller metoden for MongoCollection tæller antallet af dokumenter til stede i en samling.

Som en løsning kan vi bruge denne metode til at kontrollere samlingens eksistens. Her er Java-kodestykket til det samme:

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

Denne metode virker ikke, hvis der eksisterer en samling uden nogen data. I så fald vil den returnere 0, men samlingen eksisterer med tomme data.


  1. 'session' er udefineret, når du bruger express / redis til session store

  2. Forespørgsel på indlejrede objekter i Mongoid/rails 3 (lavere end, min-operatorer og sortering)

  3. Hvordan ringer man til BGSAVE fra BookSleeve?

  4. Installation af Memcached på Debian 9