MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Przewodnik po MongoDB z Javą

1. Przegląd

W tym artykule przyjrzymy się integracji MongoDB, bardzo popularnej bazy danych typu open source NoSQL, z samodzielnym klientem Java.

MongoDB jest napisany w C++ i ma wiele solidnych funkcji, takich jak redukcja mapy, auto-sharding, replikacja, wysoka dostępność itp.

2. MongoDB

Zacznijmy od kilku kluczowych punktów dotyczących samego MongoDB:

  • przechowuje dane w dokumentach podobnych do JSON, które mogą mieć różne struktury
  • używa dynamicznych schematów, co oznacza, że ​​możemy tworzyć rekordy bez wstępnego definiowania czegokolwiek
  • strukturę rekordu można zmienić po prostu przez dodanie nowych pól lub usunięcie istniejących

Wspomniany powyżej model danych daje nam możliwość łatwego reprezentowania relacji hierarchicznych, przechowywania tablic i innych bardziej złożonych struktur.

3. Terminologie

Zrozumienie pojęć w MongoDB staje się łatwiejsze, jeśli możemy je porównać ze strukturami relacyjnych baz danych.

Zobaczmy analogie między Mongo a tradycyjnym systemem MySQL:

  • Tabela w MySQL staje się kolekcją w Mongo
  • Wiersz staje się Dokumentem
  • Kolumna staje się Polem
  • Dołączenia są zdefiniowane jako linkowanie i osadzone dokumenty

Jest to oczywiście uproszczony sposób spojrzenia na podstawowe koncepcje MongoDB, ale mimo to przydatny.

Teraz przejdźmy do implementacji, aby zrozumieć tę potężną bazę danych.

4. Zależności Mavena

Musimy zacząć od zdefiniowania zależności sterownika Java dla MongoDB:

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

Aby sprawdzić, czy została wydana jakakolwiek nowa wersja biblioteki – śledź wydania tutaj.

5. Korzystanie z MongoDB

Teraz zacznijmy implementować zapytania Mongo za pomocą Javy. Przyjrzymy się podstawowym operacjom CRUD, ponieważ są one najlepsze na początek.

5.1. Nawiąż połączenie z MongoClient

Najpierw nawiążmy połączenie z serwerem MongoDB. W wersji>=2.10.0 użyjemy MongoClient :

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

A dla starszych wersji użyj Mongo klasa:

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

5.2. Łączenie z bazą danych

Teraz połączmy się z naszą bazą danych. Warto zauważyć, że nie musimy go tworzyć. Gdy Mongo zobaczy, że baza danych nie istnieje, utworzy ją za nas:

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

Czasami domyślnie MongoDB działa w trybie uwierzytelnionym. W takim przypadku musimy uwierzytelnić się podczas łączenia się z bazą danych.

Możemy to zrobić w sposób przedstawiony poniżej:

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

5.3. Pokaż istniejące bazy danych

Wyświetlmy wszystkie istniejące bazy danych. Kiedy chcemy użyć wiersza poleceń, składnia do wyświetlania baz danych jest podobna do MySQL:

show databases;

W Javie wyświetlamy bazy danych za pomocą poniższego fragmentu kodu:

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

Wynikiem będą:

local      0.000GB
myMongoDb  0.000GB

Powyżej, lokalnie jest domyślną bazą danych Mongo.

5.4. Utwórz kolekcję

Zacznijmy od utworzenia kolekcji (odpowiednik tabeli dla MongoDB) dla naszej bazy danych. Po połączeniu się z naszą bazą danych możemy utworzyć Zbiór jako:

database.createCollection("customers", null);

Teraz wyświetlmy wszystkie istniejące kolekcje dla bieżącej bazy danych:

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

Wynikiem będą:

customers

5.5. Zapisz – wstaw

zapisz operacja ma semantykę zapisu lub aktualizacji:jeśli id jest obecny, wykonuje aktualizację , jeśli nie – robi wstawkę .

Kiedy zapisujemy nowy klient:

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

Podmiot zostanie wstawiony do bazy danych:

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

Następnie przyjrzymy się tej samej operacji – zapisz – z aktualizacją semantyka.

5.6. Zapisz – zaktualizuj

Spójrzmy teraz na zapisz z aktualizacją semantyka, operowanie na istniejącym kliencie:

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

Teraz, gdy zapisujemy dotychczasowego klienta – zaktualizujemy go:

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

Baza danych będzie wyglądać tak:

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

Jak widać, w tym konkretnym przykładzie zapisz używa semantyki aktualizacji , ponieważ używamy obiektu o podanym _id .

5.7. Przeczytaj dokument Z kolekcji

Poszukajmy dokumentu w kolekcji poprzez zapytanie:

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

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

Wyświetli jedyny Dokument mamy już w naszej kolekcji :

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

5.8. Usuń dokument

Przejdźmy do naszej ostatniej operacji CRUD, usunięcia:

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

collection.remove(searchQuery);

Po wykonaniu powyższego polecenia, nasz jedyny Dokument zostanie usunięty z kolekcji .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie z łańcuchowym formatem daty w mongodb

  2. Zaktualizuj i zwróć dokument w Mongodb

  3. MongoDB $istnieje

  4. Jak filtrować tablicę w poddokumencie za pomocą MongoDB?

  5. Zakres paginacji MongoDB