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

Průvodce MongoDB s Java

1. Přehled

V tomto článku se podíváme na integraci MongoDB, velmi populární NoSQL open source databáze se samostatným Java klientem.

MongoDB je napsán v C++ a má řadu solidních funkcí, jako je redukce map, automatické sharding, replikace, vysoká dostupnost atd.

2. MongoDB

Začněme několika klíčovými body o samotné MongoDB:

  • ukládá data do dokumentů podobných JSON, které mohou mít různé struktury
  • používá dynamická schémata, což znamená, že můžeme vytvářet záznamy bez předdefinování
  • strukturu záznamu lze jednoduše změnit přidáním nových polí nebo odstraněním stávajících

Výše zmíněný datový model nám dává možnost reprezentovat hierarchické vztahy, snadno ukládat pole a další složitější struktury.

3. Terminologie

Pochopení pojmů v MongoDB bude snazší, pokud je můžeme porovnat se strukturami relačních databází.

Podívejme se na analogie mezi Mongo a tradičním systémem MySQL:

  • Tabulka v MySQL se stává kolekcí v Mongo
  • Řádek se stane dokumentem
  • Sloupec se stane Pole
  • Připojí se jsou definovány jako propojení a vložené dokumenty

Toto je samozřejmě zjednodušený způsob, jak se podívat na základní koncepty MongoDB, ale přesto užitečný.

Nyní se pojďme ponořit do implementace, abychom porozuměli této výkonné databázi.

4. Maven Dependencies

Musíme začít definováním závislosti ovladače Java pro MongoDB:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.4.1</version>
</dependency>

Chcete-li zkontrolovat, zda byla vydána nová verze knihovny, sledujte vydání zde.

5. Pomocí MongoDB

Nyní začněme implementovat dotazy Mongo pomocí Javy. Budeme následovat základní operace CRUD, protože jsou pro začátek nejlepší.

5.1. Vytvořte spojení s MongoClient

Nejprve se připojíme k serveru MongoDB. S verzí>=2.10.0 použijeme MongoClient :

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

A pro starší verze použijte Mongo třída:

Mongo mongo = new Mongo("localhost", 27017);

5.2. Připojení k databázi

Nyní se připojíme k naší databázi. Je zajímavé poznamenat, že žádný nepotřebujeme vytvářet. Když Mongo uvidí, že databáze neexistuje, vytvoří ji za nás:

DB database = mongoClient.getDB("myMongoDb");

Někdy ve výchozím nastavení běží MongoDB v ověřeném režimu. V takovém případě se musíme při připojování k databázi ověřit.

Můžeme to udělat, jak je uvedeno níže:

MongoClient mongoClient = new MongoClient();
DB database = mongoClient.getDB("myMongoDb");
boolean auth = database.authenticate("username", "pwd".toCharArray());

5.3. Zobrazit existující databáze

Zobrazme všechny existující databáze. Když chceme použít příkazový řádek, syntaxe pro zobrazení databází je podobná MySQL:

show databases;

V Javě zobrazujeme databáze pomocí úryvku níže:

mongoClient.getDatabaseNames().forEach(System.out::println);

Výstup bude:

local      0.000GB
myMongoDb  0.000GB

Výše, místní je výchozí mongo databáze.

5.4. Vytvořte sbírku

Začněme vytvořením kolekce (ekvivalent tabulky pro MongoDB) pro naši databázi. Jakmile se připojíme k naší databázi, můžeme vytvořit Sbírku jako:

database.createCollection("customers", null);

Nyní si ukážeme všechny existující kolekce pro aktuální databázi:

database.getCollectionNames().forEach(System.out::println);

Výstup bude:

customers

5.5. Uložit – Vložit

Uložení operace má sémantiku uložení nebo aktualizace:pokud id je přítomen, provede aktualizaci , pokud ne – provede vložení .

Když ušetříme nový zákazník:

DBCollection collection = database.getCollection("customers");
BasicDBObject document = new BasicDBObject();
document.put("name", "Shubham");
document.put("company", "Baeldung");
collection.insert(document);

Entita bude vložena do databáze:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "Shubham",
    "company" : "Baeldung"
}

Dále se podíváme na stejnou operaci – uložit – s aktualizací sémantika.

5.6. Uložit – aktualizovat

Podívejme se nyní na uložit s aktualizací sémantika, působící na stávajícího zákazníka:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "Shubham",
    "company" : "Baeldung"
}

Nyní, když ušetříme stávajícího zákazníka – aktualizujeme:

BasicDBObject query = new BasicDBObject();
query.put("name", "Shubham");

BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "John");

BasicDBObject updateObject = new BasicDBObject();
updateObject.put("$set", newDocument);

collection.update(query, updateObject);

Databáze bude vypadat takto:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "John",
    "company" : "Baeldung"
}

Jak vidíte, v tomto konkrétním příkladu uložit používá sémantiku aktualizace , protože používáme objekt s daným _id .

5.7. Přečtěte si dokument Ze sbírky

Vyhledejme Dokument ve kolekci zadáním dotazu:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
DBCursor cursor = collection.find(searchQuery);

while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

Zobrazí jediný dokument již máme v naší kolekci :

[
    {
      "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
      "name" : "John",
      "company" : "Baeldung"
    }
]

5.8. Smazat dokument

Pojďme vpřed k naší poslední operaci CRUD, vymazání:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");

collection.remove(searchQuery);

S výše uvedeným příkazem je náš jediný dokument budou odstraněny ze sbírky .


  1. Instalace Redis na Debian 9

  2. Jak vybrat vnořené dokumenty pomocí MongoDB

  3. mongoDB upsert na pole

  4. MongoDB - velikost souboru je obrovská a stále roste