MongoDB BSON vodič

1. Uvod

U ovom uputstvu ćemo pogledati BSON i kako ga možemo koristiti za interakciju s MongoDB-om.

Sad, detaljni opis MongoDB-a i svih njegovih mogućnosti izvan je dosega ovog članka. Međutim, bilo bi korisno razumjeti nekoliko ključnih pojmova.

MongoDB je distribuirani NoSQL mehanizam za pohranu dokumenata. Dokumenti se pohranjuju kao BSON podaci i grupiraju u zbirke. Dokumenti u zbirci analogni su redovima u relacijskoj tablici baze podataka.

Za dublji uvid, pogledajte uvodni članak MongoDB-a.

2. Što je BSON?

BSON je kratica Binarni JSON. To je protokol za binarnu serializaciju podataka sličnih JSON-u.

JSON je format za razmjenu podataka koji je popularan u modernim web uslugama. Pruža fleksibilan način predstavljanja složenih struktura podataka.

BSON pruža nekoliko prednosti u odnosu na upotrebu uobičajenog JSON-a:

  • Kompaktno: U većini slučajeva spremanje datoteke BSON struktura zahtijeva manje prostora od JSON ekvivalenta
  • Tipovi podataka: BSON pruža dodatne vrste podataka nije pronađen u redovnom JSON-u, kao što je Datum i BinData

Jedna od glavnih blagodati upotrebe BSON-a je ta što je jednostavan za prolazak. BSON dokumenti sadrže dodatne metapodatke koji omogućuju lako rukovanje poljima dokumenta, bez potrebe za čitanjem samog dokumenta.

3. MongoDB upravljački program

Sad kad osnovno razumijemo BSON i MongoDB, pogledajmo kako ih zajedno koristiti. Usredotočit ćemo se na glavne radnje iz kratice CRUD (Create, Read, Update, Delete).

MongoDB nudi upravljačke programe za većinu modernih programskih jezika. Pokretači su izgrađeni na vrhu BSON knjižnice, što znači da ćemo pri izradi upita raditi izravno s BSON API-jem. Za više informacija pogledajte naš vodič za jezik upita MongoDB.

U ovom ćemo odjeljku pogledati upotrebu upravljačkog programa za povezivanje s klasterom i upotrebu BSON API-ja za izvršavanje različitih vrsta upita. Imajte na umu da MongoDB upravljački program pruža a Filteri klasa koja nam može pomoći u pisanju kompaktnijeg koda. Međutim, za ovaj ćemo se vodič usredotočiti isključivo na upotrebu temeljnog BSON API-ja.

Kao alternativu izravnoj upotrebi MongoDB upravljačkog programa i BSON-a, pogledajte naš vodič Spring Data MongoDB.

3.1. Povezivanje

Za početak prvo dodajemo upravljački program MongoDB kao ovisnost u našu aplikaciju:

 org.mongodb mongodb-driver-sync 3.10.1 

Zatim stvaramo vezu s MongoDB bazom podataka i kolekcijom:

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

Preostali odjeljci proučit će stvaranje upita pomoću kolekcija referenca.

3.2. Umetnuti

Recimo da imamo sljedeći JSON koji želimo umetnuti kao novi dokument u zaposlenici kolekcija:

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

Ovaj primjer JSON prikazuje najčešće tipove podataka s kojima bismo se susreli s MongoDB dokumentima: tekst, numerički, nizovi i ugrađeni dokumenti.

Da bismo ovo umetnuli pomoću BSON-a, koristili bismo MongoDB-ove Dokument API:

Zaposlenik u dokumentu = novi Document () .append ("first_name", "Joe") .append ("last_name", "Smith") .append ("title", "Java Developer") .append ("years_of_service", 3) .append ("skill", Arrays.asList ("java", "spring", "mongodb")) .append ("manager", novi Document () .append ("first_name", "Sally") .append (" prezime_ "," Johanson ")); collection.insertOne (zaposlenik); 

The Dokument class je primarni API koji se koristi u BSON-u. Proširuje Javu Karta sučelje i sadrži nekoliko preopterećenih metoda. To olakšava rad s izvornim vrstama, kao i sa uobičajenim objektima kao što su ID-ovi objekata, datumi i popisi.

3.3. Pronaći

Da bismo pronašli dokument u MongoDB-u, pružamo dokument za pretraživanje koji određuje u kojim poljima se traži upit. Na primjer, za pronalaženje svih dokumenata koji se prezivaju "Smith" koristili bismo sljedeći JSON dokument:

{"last_name": "Smith"}

Napisano na BSON-u ovo bi bilo:

Upit za dokument = novi dokument ("prezime", "Smith"); Rezultati popisa = novi ArrayList (); collection.find (upit) .into (rezultati);

Upiti "Pronađi" mogu prihvatiti više polja, a zadano ponašanje je korištenje logičkog i operater da ih kombinira. To znači da će se vratiti samo dokumenti koji se podudaraju sa svim poljima.

Da bi to zaobišao, MongoDB nudi ili operator upita:

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

Ovdje će se naći svi dokumenti koji imaju ili ime "Joe" ili prezime "Smith". Da bismo ovo zapisali kao BSON, koristili bismo ugniježđeno Dokument baš kao i gornji upit za umetanje:

Upit za dokument = novi dokument ("$ ili", Arrays.asList (novi dokument ("prezime", "Smith"), novi dokument ("prvo ime", "Joe"))); Rezultati popisa = novi ArrayList (); collection.find (upit) .into (rezultati);

3.4. ažuriranje

Upiti za ažuriranje malo su drugačiji u MongoDB-u jer zahtijevaju dva dokumenta:

  1. Kriteriji filtra za pronalaženje jednog ili više dokumenata
  2. Dokument ažuriranja koji navodi koja polja treba izmijeniti

Na primjer, recimo da želimo dodati vještinu „sigurnosti“ svakom zaposleniku koji već ima vještinu „proljeća“. Prvi dokument naći će sve zaposlenike s „proljetnim“ vještinama, a drugi će dodati novi „sigurnosni“ unos u njihov niz vještina.

U JSON-u bi ova dva upita izgledala ovako:

{"vještine": {$ elemMatch: {"$ eq": "proljeće"}}} {"$ push": {"vještine": "sigurnost"}}

A u BSON-u bi bili:

Upit za dokument = novi dokument ("vještine", novi dokument ("$ elemMatch", novi dokument ("$ eq", "proljeće"))); Ažuriranje dokumenta = novi dokument ("$ push", novi dokument ("vještine", "sigurnost")); collection.updateMany (upit, ažuriranje); 

3.5. Izbrisati

Brisanje upita u MongoDB-u koristi istu sintaksu kao i upiti za pronalaženje. Jednostavno pružamo dokument koji navodi jedan ili više kriterija koji se moraju podudarati.

Na primjer, recimo da smo pronašli grešku u našoj bazi podataka zaposlenika i slučajno stvorili zaposlenike s negativnom vrijednošću za radni staž. Da bismo ih pronašli, koristili bismo sljedeći JSON:

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

Ekvivalent BSON-ovog dokumenta bio bi:

Upit za dokument = novi dokument ("years_of_service", novi dokument ("$ lt", 0)); collection.deleteMany (upit);

4. Zaključak

U ovom uputstvu vidjeli smo osnovni uvod u izgradnju MongoDB upita pomoću BSON biblioteke. Koristeći samo BSON API, implementirali smo osnovne CRUD operacije za MongoDB kolekciju.

Ono što nismo obradili jesu naprednije teme poput projekcija, agregacija, geoprostornih upita, skupnih operacija i još mnogo toga. Sve je to moguće koristeći samo BSON knjižnicu. Primjeri koje smo ovdje vidjeli tvore gradivne blokove koje bismo koristili za provedbu ovih naprednijih operacija.

Kao i uvijek, gore navedene primjere koda možete pronaći u našem GitHub repo-u.


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