Sprievodca MongoDB BSON

1. Úvod

V tomto výučbe sa pozrieme na BSON a na to, ako ho môžeme používať na interakciu s MongoDB.

Teraz je podrobný popis MongoDB a všetkých jeho schopností nad rámec tohto článku. Bude však užitočné pochopiť niekoľko kľúčových pojmov.

MongoDB je distribuovaný nástroj na ukladanie dokumentov NoSQL. Dokumenty sa ukladajú ako údaje BSON a zoskupujú sa do zbierok. Dokumenty v zbierke sú analogické s riadkami v tabuľke relačnej databázy.

Pre podrobnejší pohľad si pozrite úvodný článok o MongoDB.

2. Čo je BSON?

BSON znamená Binárny JSON. Je to protokol pre binárnu serializáciu údajov podobných JSON.

JSON je formát výmeny údajov, ktorý je populárny v moderných webových službách. Poskytuje flexibilný spôsob reprezentácie zložitých dátových štruktúr.

BSON poskytuje oproti bežnému JSON niekoľko výhod:

  • Kompaktné: Vo väčšine prípadov skladovanie a Štruktúra BSON vyžaduje menej priestoru ako jej ekvivalent JSON
  • Typy údajov: BSON poskytuje ďalšie typy údajov nenájdené v bežnom JSON, ako napr Dátum a BinData

Jednou z hlavných výhod používania BSON je, že sa dá ľahko prechádzať. Dokumenty BSON obsahujú ďalšie metaúdaje, ktoré umožňujú ľahkú manipuláciu s poľami dokumentu bez toho, aby ste museli čítať celý dokument sám.

3. Ovládač MongoDB

Teraz, keď máme základné znalosti o BSON a MongoDB, sa pozrime na to, ako ich používať spoločne. Zameriame sa na hlavné akcie zo skratky CRUD (C.reate, Reead, Udátum, Delete).

MongoDB poskytuje softvérové ​​ovládače pre väčšinu moderných programovacích jazykov. Ovládače sú postavené na vrchu knižnice BSON, čo znamená, že pri vytváraní dotazov budeme pracovať priamo s rozhraním BSON API. Ďalšie informácie nájdete v našom sprievodcovi dotazovacím jazykom MongoDB.

V tejto časti sa pozrieme na použitie ovládača na pripojenie ku klastru a použitie rozhrania BSON API na vykonávanie rôznych typov dotazov. Upozorňujeme, že ovládač MongoDB poskytuje Filtre triedy, ktorá nám môže pomôcť napísať kompaktnejší kód. V tomto tutoriáli sa však zameriame výlučne na použitie základného BSON API.

Ako alternatívu k priamemu použitiu ovládača MongoDB a BSON si pozrite nášho sprievodcu Spring Data MongoDB.

3.1. Pripája sa

Na začiatok najskôr do našej aplikácie pridáme ako závislosť ovládač MongoDB:

 org.mongodb mongodb-driver-sync 3.10.1 

Potom vytvoríme pripojenie k databáze a kolekcii MongoDB:

MongoClient mongoClient = MongoClients.create (); MongoDatabase database = mongoClient.getDatabase ("myDB"); MongoCollection collection = database.getCollection ("zamestnanci");

Zvyšné časti sa budú zaoberať vytváraním dotazov pomocou zbierka odkaz.

3.2. Vložte

Povedzme, že máme nasledujúci súbor JSON, ktorý chceme vložiť ako nový dokument do súboru zamestnancov zbierka:

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

Tento príklad JSON ukazuje najbežnejšie typy údajov, s ktorými by sme sa mohli stretnúť v dokumentoch MongoDB: textové, číselné, polia a vložené dokumenty.

Aby sme to vložili pomocou BSON, použili by sme MongoDB Dokument API:

Zamestnanec dokumentu = nový dokument () .append ("first_name", "Joe") .append ("last_name", "Smith") .append ("title", "Java Developer") .append ("years_of_service", 3) .append ("skills", Arrays.asList ("java", "jar", "mongodb")) .append ("manažér", nový dokument () .append ("krstné meno", "Sally") .append (" priezvisko "," Johanson ")); collection.insertOne (zamestnanec); 

The Dokument class je primárne API používané v BSON. Rozširuje Javu Mapa rozhranie a obsahuje niekoľko preťažených metód. Toto uľahčuje prácu s natívnymi typmi, ako aj s bežnými objektmi, ako sú ID objektov, dátumy a zoznamy.

3.3. Nájsť

Na vyhľadanie dokumentu v MongoDB poskytujeme vyhľadávací dokument, ktorý určuje, na ktoré polia sa má dotazovať. Napríklad na nájdenie všetkých dokumentov, ktoré majú priezvisko „Smith“, by sme použili nasledujúci dokument JSON:

{"last_name": "Smith"}

Napísané v BSON by to bolo:

Dotaz na dokument = nový dokument ("priezvisko", "Smith"); Zoznam výsledkov = nový ArrayList (); collection.find (dopyt) .into (výsledky);

Vyhľadávacie dotazy môžu prijímať viac polí a predvolené správanie je logické a ich kombinovať. To znamená, že sa vrátia iba dokumenty, ktoré zodpovedajú všetkým poliam.

Aby ste sa tomu vyhli, poskytuje MongoDB alebo operátor dotazu:

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

Nájdete všetky dokumenty, ktoré majú buď meno „Joe“, alebo priezvisko „Smith“. Aby sme to napísali ako BSON, použili by sme vnorené Dokument rovnako ako dotaz na vloženie vyššie:

Dotaz na dokument = nový dokument ("$ alebo", Arrays.asList (nový dokument ("priezvisko", "Smith"), nový dokument ("krstné meno", "Joe"))); Zoznam výsledkov = nový ArrayList (); collection.find (dopyt) .into (výsledky);

3.4. Aktualizácia

Aktualizačné dotazy sa v MongoDB trochu líšia, pretože vyžadujú dva dokumenty:

  1. Kritériá filtra na vyhľadanie jedného alebo viacerých dokumentov
  2. Aktualizačný dokument s uvedením, ktoré polia sa majú upraviť

Povedzme napríklad, že chceme pridať zručnosť „zabezpečenia“ ku každému zamestnancovi, ktorý už má schopnosť „pruženia“. V prvom dokumente nájdete všetkých zamestnancov s „jarnými“ zručnosťami a v druhom dokumente pridáte do poľa svojich schopností nový „zabezpečovací“ vstup.

V JSON by tieto dva dotazy vyzerali takto:

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

A v BSON by to boli:

Dotaz na dokument = nový dokument ("zručnosti", nový dokument ("$ elemMatch", nový dokument ("$ eq", "jar"))); Aktualizácia dokumentu = nový dokument ("$ push", nový dokument ("zručnosti", "zabezpečenie")); collection.updateMany (dopyt, aktualizácia); 

3.5. Odstrániť

Pri mazaní dotazov v MongoDB používajte rovnakú syntax ako pri vyhľadávaní. Jednoducho poskytneme dokument, ktorý špecifikuje jedno alebo viac kritérií, ktoré sa majú zhodovať.

Povedzme napríklad, že sme našli chybu v našej databáze zamestnancov a omylom sme vytvorili zamestnancov so zápornou hodnotou za roky služby. Aby sme ich našli všetky, použili by sme nasledujúci JSON:

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

Ekvivalentný dokument BSON by bol:

Dotaz na dokument = nový dokument ("years_of_service", nový dokument ("$ lt", 0)); collection.deleteMany (dopyt);

4. Záver

V tomto tutoriáli sme videli základný úvod do vytvárania dotazov MongoDB pomocou knižnice BSON. Použitím iba BSON API sme implementovali základné operácie CRUD pre kolekciu MongoDB.

To, čo sme nepokryli, sú pokročilejšie témy, ako sú projekcie, agregácie, geopriestorové dotazy, hromadné operácie a ďalšie. Všetky tieto možnosti sú možné iba pomocou knižnice BSON. Príklady, ktoré sme tu videli, tvoria stavebné bloky, ktoré by sme použili na implementáciu týchto pokročilejších operácií.

Ako vždy, vyššie nájdete príklady kódov v našom repozitári GitHub.


$config[zx-auto] not found$config[zx-overlay] not found