Příklad tutoriálu MongoDB Java CRUD

Úvod do problematiky

MongoDB se etablovala jako populární a flexibilní databázová platforma typu NoSQL, s otevřeným zdrojovým kódem. Její hlavní výhodou je schopnost efektivně pracovat s daty ve formátech JSON a BSON. Java, jakožto univerzální programovací jazyk, nabízí solidní základ pro vývoj robustních aplikací. Kombinace MongoDB a Javy otevírá vývojářům dveře k vytváření komplexních, datově orientovaných řešení.

Základní operace CRUD

CRUD (vytvoření, čtení, aktualizace a odstranění) představují klíčové operace při práci s jakoukoliv databází. V kontextu MongoDB s Javou se tyto akce realizují prostřednictvím Java driveru MongoDB, který poskytuje potřebné nástroje pro interakci s databází a správu dokumentů.

Vytvoření záznamu (Create)

Pro uložení nového dokumentu do kolekce MongoDB se nejprve vytvoří objekt typu Document a následně se tento dokument přidá do kolekce pomocí metody insertOne().

java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoClients;
import org.bson.Document;

public class VytvorDokument {

public static void main(String[] args) {
// Navázání spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);

// Konstrukce nového dokumentu
Document novyDokument = new Document()
.append(„jmeno“, „Jan Novak“)
.append(„vek“, 35);

// Vložení dokumentu do databáze
kolekce.insertOne(novyDokument);

// Uzavření spojení
klientMongoDB.close();
}
}

Získání záznamu (Read)

Pro načtení existujících dokumentů z kolekce MongoDB slouží metoda find(). Tato metoda vrací kurzor, který iteruje nalezené dokumenty.

java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoClients;
import org.bson.Document;
import org.bson.types.ObjectId;
import static com.mongodb.client.model.Filters.eq;

public class CteniDokumentu {

public static void main(String[] args) {
// Vytvoření spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);

// Vyhledání dokumentu dle jeho ID
Document dokument = kolekce.find(eq(„_id“, new ObjectId(„5ec35e9373894ac2305ba193“))).first();

// Získání všech dokumentů z kolekce
MongoCursor<Document> kurzor = kolekce.find().iterator();
while (kurzor.hasNext()) {
Document aktualniDokument = kurzor.next();
System.out.println(aktualniDokument.toJson());
}

// Ukončení připojení
klientMongoDB.close();
}
}

Aktualizace záznamu (Update)

Pro modifikaci existujícího dokumentu v MongoDB se využívá metoda updateOne(). Tato metoda vyžaduje definici filtru pro identifikaci dokumentu, který se má aktualizovat, a dokument s novými hodnotami.

java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoClients;
import org.bson.Document;
import org.bson.types.ObjectId;
import static com.mongodb.client.model.Filters.eq;

public class AktualizaceDokumentu {

public static void main(String[] args) {
// Navázání spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);

// Aktualizace dokumentu na základě jeho ID
Document filtr = eq(„_id“, new ObjectId(„5ec35e9373894ac2305ba193“));
Document aktualizace = new Document(„$set“, new Document(„vek“, 36));
kolekce.updateOne(filtr, aktualizace);

// Uzavření spojení
klientMongoDB.close();
}
}

Odstranění záznamu (Delete)

Pro odstranění dokumentu z MongoDB se používá metoda deleteOne(). Tato metoda vyžaduje specifikaci filtru, který identifikuje dokument k odstranění.

java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoClients;
import org.bson.Document;
import org.bson.types.ObjectId;
import static com.mongodb.client.model.Filters.eq;

public class SmazaniDokumentu {

public static void main(String[] args) {
// Vytvoření spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);

// Smazání dokumentu pomocí ID
Document filtr = eq(„_id“, new ObjectId(„5ec35e9373894ac2305ba193“));
kolekce.deleteOne(filtr);

// Uzavření připojení
klientMongoDB.close();
}
}

Závěr

Interakce s MongoDB prostřednictvím Javy a operací CRUD představuje efektivní a flexibilní způsob správy dat. Java driver pro MongoDB poskytuje intuitivní rozhraní pro provádění těchto operací. Vývojáři tak mají k dispozici solidní nástroj pro vytváření spolehlivých a výkonných aplikací, které plně využívají potenciálu databáze MongoDB.

Často kladené otázky

1. Jak se v Javě připojím k MongoDB databázi?
java
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoClients;

public class PripojeniKMongoDB {

public static void main(String[] args) {
// Vytvoření spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
// Provedení dalších operací s databází…
}
}

2. Jak se v Javě vytváří kolekce v MongoDB?
java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoClients;

public class VytvoreniKolekce {

public static void main(String[] args) {
// Vytvoření spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);

// Vytvoření kolekce
databaze.createCollection(„person“);
}
}

3. Jak se v Javě vytvoří index v MongoDB?
java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoClients;
import org.bson.Document;

public class VytvoreniIndexu {

public static void main(String[] args) {
// Navázání spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);

// Vytvoření indexu
kolekce.createIndex(new Document(„jmeno“, 1));
}
}

4. Jak v Javě provedeme filtrovaný dotaz v MongoDB?
java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoClients;
import org.bson.Document;

public class HledaniDokumentu {

public static void main(String[] args) {
// Navázání spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);

// Filtrovaný dotaz
Document filtr = new Document(„vek“, new Document(„$gt“, 30));
kolekce.find(filtr).forEach(System.out::println);
}
}

5. Jak v Javě provádíme agregaci v MongoDB?
java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoClients;
import org.bson.Document;

public class AgregaceDokumentu {

public static void main(String[] args) {
// Vytvoření spojení s databází
MongoClient klientMongoDB = MongoClients.create(„mongodb://localhost:27017“);
MongoDatabase databaze = klientMongoDB.getDatabase(„test“);
MongoCollection<Document> kolekce = databaze.getCollection(„person“);
// Provedení agregace
// Příklady agregačních pipeline jsou složitější, viz dokumentace MongoDB.
}
}