sql >> Databáze >  >> NoSQL >> MongoDB

Zkontrolujte existenci kolekce v MongoDB

1. Přehled

MongoDB je databáze NoSQL, která ukládá datové záznamy jako BSON dokumenty do sbírky. Můžeme mít více databází a každá databáze může mít jednu nebo více kolekcí dokumentů.

Na rozdíl od relačních databází vytváří MongoDB kolekci s vloženým dokumentem bez potřeby jakékoli definice struktury. V tomto tutoriálu se naučíme různé způsoby, jak ověřit existenci kolekce. Použijeme collectionExists, createCollection, listCollectionNames, apočet metoda kontroly existence kolekce.

2. Konektivita databáze

Abychom měli přístup k jakýmkoli datům kolekce, musíme nejprve nastavit spojení s databází. Pojďme se připojit k databázi MongoDB, která běží lokálně na našem počítači.

2.1. Vytvořte připojení pomocí MongoClient

MongoClient  je třída Java používaná k navázání spojení s instancí MongoDB:

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

Zde se připojujeme k MongoDB, který běží na výchozím portu 27017 na localhost.

2.2. Připojit k databázi

Nyní použijeme MongoClient objekt pro přístup k databázi. Existují dva způsoby přístupu k databázi pomocí MongoClient .

Nejprve použijeme getDatabase způsob přístupu k baeldung databáze:

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

Můžeme také použít getDB způsob připojení ovladače Mongo Java k databázi:

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

getDB  metoda je zastaralá, a proto se nedoporučuje používat.

Zatím jsme nastavili spojení s MongoDB pomocí MongoClient a dále se připojili k baeldung databáze.

Pojďme se hluboce ponořit do různých přístupů ke kontrole existence kolekce v MongoDB.

3. Pomocí DB Třída

MongoDB Java Driver poskytuje synchronní i asynchronní volání metod. Abychom se mohli připojit k databázi, stačí zadat název databáze. Pokud databáze není přítomna, MongoDB ji automaticky vytvoří.

kolekceExistuje metodu lze použít ke kontrole, zda je kolekce přítomna či nikoli:

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

Zde kolekceExistuje metoda vrátí true pokud kolekce existuje, jinak false.

The com.mongodb.DB API ovladače MongoDB Java je zastaralé od verze 3.x, ale je stále přístupné. Proto DB třída se nedoporučuje používat pro nový projekt.

4. Pomocí Databáze Mongo Třída

com.mongodb.client.MongoDatabase je aktualizované API pro Mongo 3.xa vyšší. Na rozdíl od třídy DB třída MongoDatabase neposkytuje žádnou konkrétní metodu pro kontrolu existence kolekce. Existují však různé metody, které můžeme použít k dosažení požadovaných výsledků.

4.1. Pomocí createCollection Metoda

createCollection metoda vytvoří novou kolekci v MongoDB. Můžeme jej však také použít ke kontrole, zda kolekce existuje nebo ne:

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

Výše uvedený kód vytvoří novou kolekci „student“ pokud již není přítomen v databázi. createCollection metoda vyvolá výjimku v případě, že kolekce již existuje.

Tento přístup se nedoporučuje, protože vytváří novou kolekci v databázi.

4.2. Pomocí listCollectionNames Metoda

listCollectionNames metoda vypíše všechny názvy kolekcí v databázi. Tuto metodu tedy můžeme použít k vyřešení problému existence kolekce.

Podívejme se nyní na příklad kódu listCollectionNames metoda pomocí kódu ovladače 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);

Zde jsme iterovali seznam všech názvů kolekcí v databázi baeldung. U každého výskytu porovnáváme název řetězce kolekce s testCollectionName . Vrátí to true při úspěšné shodě nepravda jinak.

4.3. Pomocí počet Metoda

Počet metoda MongoCollection počítá počet dokumentů přítomných ve sbírce.

Jako řešení můžeme tuto metodu použít ke kontrole existence kolekce. Zde je fragment kódu Java pro totéž:

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

Tato metoda nefunguje, pokud kolekce existuje bez jakýchkoli dat. V takovém případě vrátí 0, ale kolekce existuje s prázdnými daty.


  1. MongoDB® s Hadoopem a souvisejícími technologiemi Big Data

  2. Připojení k databázím MongoDB

  3. MongoDB $toDecimal

  4. řešení situací redis maxmemory s raily při použití rails cachingu