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

Przewodnik MongoDB BSON

1. Wprowadzenie

W tym samouczku przyjrzymy się BSON i sposobom wykorzystania go do interakcji z MongoDB.

Teraz szczegółowy opis MongoDB i wszystkich jego możliwości wykracza poza zakres tego artykułu. Jednak przydatne będzie zrozumienie kilku kluczowych pojęć.

MongoDB to rozproszony silnik przechowywania dokumentów NoSQL. Dokumenty są przechowywane jako dane BSON i pogrupowane w kolekcje. Dokumenty w kolekcji są analogiczne do wierszy w tabeli relacyjnej bazy danych .

Aby uzyskać bardziej szczegółowe informacje, zajrzyj do artykułu wprowadzającego MongoDB.

2. Co to jest BSON ?

BSON oznacza binarny JSON . Jest to protokół do binarnej serializacji danych typu JSON.

JSON to format wymiany danych popularny w nowoczesnych usługach internetowych. Zapewnia elastyczny sposób reprezentowania złożonych struktur danych.

BSON ma kilka zalet w porównaniu ze zwykłym JSON:

  • Kompaktowy:w większości przypadków przechowywanie struktury BSON wymaga mniej miejsca niż jej odpowiednik JSON
  • Typy danych:BSON zapewnia dodatkowe typy danych nie można znaleźć w zwykłym JSON, na przykład Data i BinData

Jedną z głównych zalet korzystania z BSON jest łatwość poruszania się . Dokumenty BSON zawierają dodatkowe metadane, które pozwalają na łatwą manipulację polami dokumentu, bez konieczności czytania całego dokumentu.

3. Sterownik MongoDB

Teraz, gdy mamy podstawową wiedzę na temat BSON i MongoDB, przyjrzyjmy się, jak używać ich razem. Skoncentrujemy się na głównych działaniach z akronimu CRUD (C reate, R ead, U pdata, D usuń).

MongoDB dostarcza sterowniki oprogramowania dla większości nowoczesnych języków programowania. Sterowniki są zbudowane na bazie biblioteki BSON , co oznacza, że ​​podczas tworzenia zapytań będziemy pracować bezpośrednio z interfejsem API BSON. Aby uzyskać więcej informacji, zapoznaj się z naszym przewodnikiem po języku zapytań MongoDB.

W tej sekcji przyjrzymy się wykorzystaniu sterownika do łączenia się z klastrem oraz wykorzystaniu interfejsu API BSON do wykonywania różnych typów zapytań. Zwróć uwagę, że sterownik MongoDB udostępnia Filtry klasa, która pomoże nam napisać bardziej zwarty kod. Jednak w tym samouczku skupimy się wyłącznie na korzystaniu z podstawowego interfejsu API BSON.

Jako alternatywę dla bezpośredniego używania sterownika MongoDB i BSON, spójrz na nasz przewodnik Spring Data MongoDB.

3.1. Podłączanie

Aby rozpocząć, najpierw dodajemy sterownik MongoDB jako zależność do naszej aplikacji:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>3.10.1</version>
</dependency>

Następnie tworzymy połączenie z bazą danych MongoDB i kolekcją:

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("myDB");
MongoCollection<Document> collection = database.getCollection("employees");

Pozostałe sekcje poświęcone będą tworzeniu zapytań przy użyciu kolekcji odniesienie.

3.2. Wstaw

Załóżmy, że mamy następujący JSON, który chcemy wstawić jako nowy dokument do pracowników kolekcja:

{
  "first_name" : "Joe",
  "last_name" : "Smith",
  "title" : "Java Developer",
  "years_of_service" : 3,
  "skills" : ["java","spring","mongodb"],
  "manager" : {
     "first_name" : "Sally",
     "last_name" : "Johanson"
  }
}

Ten przykładowy plik JSON pokazuje najpopularniejsze typy danych, jakie napotkalibyśmy w dokumentach MongoDB:tekstowe, liczbowe, tablice i dokumenty osadzone.

Aby wstawić to za pomocą BSON, użyjemy Dokumentu MongoDB API:

Document employee = new Document()
    .append("first_name", "Joe")
    .append("last_name", "Smith")
    .append("title", "Java Developer")
    .append("years_of_service", 3)
    .append("skills", Arrays.asList("java", "spring", "mongodb"))
    .append("manager", new Document()
                           .append("first_name", "Sally")
                           .append("last_name", "Johanson"));
collection.insertOne(employee);

Dokument class jest podstawowym API używanym w BSON. Rozszerza Mapę Javy interfejs i zawiera kilka przeciążonych metod. Ułatwia to pracę z typami natywnymi, a także z typowymi obiektami, takimi jak identyfikatory obiektów, daty i listy.

3.3. Znajdź

Aby znaleźć dokument w MongoDB, udostępniamy dokument wyszukiwania, który określa pola do zapytania. Na przykład, aby znaleźć wszystkie dokumenty, które mają nazwisko „Kowalski”, użyjemy następującego dokumentu JSON:

{  
  "last_name": "Smith"
}

Napisane w BSON będzie to:

Document query = new Document("last_name", "Smith");
List results = new ArrayList<>();
collection.find(query).into(results);

Zapytania typu „Znajdź” mogą akceptować wiele pól, a domyślnym zachowaniem jest użycie logicznych i operatora, aby je połączyć. Oznacza to, że zostaną zwrócone tylko dokumenty pasujące do wszystkich pól .

Aby obejść ten problem, MongoDB udostępnia lub operator zapytania:

{
  "$or": [
    { "first_name": "Joe" },
    { "last_name":"Smith" }
  ]
}

Spowoduje to wyszukanie wszystkich dokumentów, które mają imię „Joe” lub nazwisko „Kowalski”. Aby zapisać to jako BSON, użyjemy zagnieżdżonego Dokumentu tak jak powyższe zapytanie wstawiania:

Document query = 
  new Document("$or", Arrays.asList(
      new Document("last_name", "Smith"),
      new Document("first_name", "Joe")));
List results = new ArrayList<>();
collection.find(query).into(results);

3.4. Zaktualizuj

Kwerendy aktualizacji są nieco inne w MongoDB, ponieważ wymagają dwóch dokumentów :

  1. Kryteria filtrowania, aby znaleźć jeden lub więcej dokumentów
  2. Dokument aktualizacji określający, które pola należy zmodyfikować

Załóżmy na przykład, że chcemy dodać umiejętność „bezpieczeństwo” do każdego pracownika, który ma już umiejętność „wiosna”. Pierwszy dokument znajdzie wszystkich pracowników z „wiosennymi” umiejętnościami, a drugi doda nowy wpis „bezpieczeństwo” do ich tablicy umiejętności.

W JSON te dwa zapytania wyglądałyby tak:

{
  "skills": { 
    $elemMatch:  { 
      "$eq": "spring"
    }
  }
}

{
  "$push": { 
    "skills": "security"
  }
}

A w BSON byłyby to:

Document query = new Document(
  "skills",
  new Document(
    "$elemMatch",
    new Document("$eq", "spring")));
Document update = new Document(
  "$push",
  new Document("skills", "security"));
collection.updateMany(query, update);

3.5. Usuń

Usunięcia zapytań w MongoDB używają tej samej składni, co zapytania wyszukiwania. Po prostu dostarczamy dokument, który określa jedno lub więcej kryteriów do spełnienia.

Załóżmy na przykład, że znaleźliśmy błąd w naszej bazie danych pracowników i przypadkowo utworzyliśmy pracowników z ujemną wartością stażu pracy. Aby znaleźć je wszystkie, użyjemy następującego JSON:

{
  "years_of_service" : { 
    "$lt" : 0
  }
}

Odpowiednikiem dokumentu BSON będzie:

Document query = new Document(
  "years_of_service", 
  new Document("$lt", 0));
collection.deleteMany(query);

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Eksportuj wyniki struktury agregacji mongodb do nowej kolekcji

  2. MongoDB $ln

  3. Instalowanie MongoDB na CentOS 7

  4. Śledzić wydajność MongoDB?

  5. Użyj próbnego serwera MongoDB do testu jednostkowego