MongoDB BSON Guide

1. Introduksjon

I denne opplæringen ser vi på BSON og hvordan vi kan bruke den til å samhandle med MongoDB.

Nå er en grundig beskrivelse av MongoDB og alle dens evner utenfor omfanget av denne artikkelen. Det vil imidlertid være nyttig å forstå noen få nøkkelbegreper.

MongoDB er en distribuert NoSQL-dokumentlagringsmotor. Dokumenter lagres som BSON-data og grupperes sammen i samlinger. Dokumenter i en samling er analoge med rader i en relasjonell databasetabell.

For en mer inngående titt, ta en titt på den innledende MongoDB-artikkelen.

2. Hva er? BSON?

BSON står for Binær JSON. Det er en protokoll for binær serialisering av JSON-lignende data.

JSON er et datautvekslingsformat som er populært i moderne webtjenester. Det gir en fleksibel måte å representere komplekse datastrukturer på.

BSON gir flere fordeler i forhold til vanlig JSON:

  • Kompakt: Oppbevaring av en i de fleste tilfeller BSON-struktur krever mindre plass enn JSON-ekvivalenten
  • Datatyper: BSON gir flere datatyper ikke funnet i vanlig JSON, for eksempel Dato og BinData

En av de viktigste fordelene ved å bruke BSON er at det er lett å krysse. BSON-dokumenter inneholder flere metadata som gjør det enkelt å manipulere feltene i et dokument uten å måtte lese hele dokumentet.

3. MongoDB-driveren

Nå som vi har en grunnleggende forståelse av BSON og MongoDB, la oss se på hvordan vi kan bruke dem sammen. Vi vil fokusere på hovedhandlingene fra CRUD-akronymet (Create, Read, Update, Delete).

MongoDB tilbyr programvaredrivere for de fleste moderne programmeringsspråk. Driverne er bygget på toppen av BSON-biblioteket, noe som betyr at vi vil jobbe direkte med BSON API når vi bygger spørsmål. For mer informasjon, se vår guide til MongoDB-spørringsspråket.

I denne delen ser vi på å bruke driveren til å koble til en klynge, og bruke BSON API til å utføre forskjellige typer spørsmål. Merk at MongoDB-driveren gir en Filtre klasse som kan hjelpe oss med å skrive mer kompakt kode. For denne opplæringen vil vi imidlertid fokusere utelukkende på å bruke kjernen BSON API.

Som et alternativ til å bruke MongoDB-driveren og BSON direkte, ta en titt på vår Spring Data MongoDB-guide.

3.1. Kobler til

For å komme i gang legger vi først MongoDB-driveren som en avhengighet i applikasjonen vår:

 org.mongodb mongodb-driver-sync 3.10.1 

Deretter oppretter vi en forbindelse til en MongoDB-database og samling:

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

De resterende delene vil se på å lage spørsmål ved hjelp av samling henvisning.

3.2. Sett inn

La oss si at vi har følgende JSON som vi vil sette inn som et nytt dokument i et ansatte samling:

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

Dette eksemplet JSON viser de vanligste datatypene vi vil støte på med MongoDB-dokumenter: tekst, numeriske, matriser og innebygde dokumenter.

For å sette inn dette ved hjelp av BSON, vil vi bruke MongoDB Dokument API:

Dokumentmedarbeider = nytt Dokument () .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 (" etternavn "," Johanson ")); collection.insertOne (ansatt); 

De Dokument klasse er den primære API-en som brukes i BSON. Det utvider Java Kart grensesnitt og inneholder flere overbelastede metoder. Dette gjør det enkelt å jobbe med innfødte typer så vel som vanlige objekter som objekt-ID-er, datoer og lister.

3.3. Finne

For å finne et dokument i MongoDB, gir vi et søkedokument som spesifiserer hvilke felt du vil spørre om. For eksempel, for å finne alle dokumenter som har etternavnet "Smith", bruker vi følgende JSON-dokument:

{"last_name": "Smith"}

Skrevet i BSON vil dette være:

Dokumentforespørsel = nytt dokument ("etternavn", "Smith"); Listeresultater = ny ArrayList (); collection.find (spørring) .into (resultater);

"Finn" -spørsmål kan godta flere felt, og standard oppførsel er å bruke det logiske og operatøren for å kombinere dem. Dette betyr at bare dokumenter som samsvarer med alle feltene blir returnert.

For å komme deg rundt dette, tilbyr MongoDB eller spørreoperatør:

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

Dette vil finne alle dokumenter som har fornavn “Joe” eller etternavn “Smith”. For å skrive dette som BSON, bruker vi en nestet Dokument akkurat som innsettingsspørringen ovenfor:

Dokumentforespørsel = nytt dokument ("$ eller", Arrays.asList (nytt dokument ("etternavn", "Smith"), nytt dokument ("fornavn", "Joe"))); Listeresultater = ny ArrayList (); collection.find (spørring) .into (resultater);

3.4. Oppdater

Oppdateringsspørsmål er litt forskjellige i MongoDB fordi de krever to dokumenter:

  1. Filterkriteriene for å finne ett eller flere dokumenter
  2. Et oppdateringsdokument som spesifiserer hvilke felt du vil endre

La oss for eksempel si at vi vil legge til en "sikkerhets" -ferdighet til alle ansatte som allerede har en "vår" -ferdighet. Det første dokumentet vil finne alle ansatte med "vår" -kompetanse, og den andre vil legge til en ny "sikkerhet" -oppføring i ferdighetsoppstillingen.

I JSON vil disse to spørsmålene se ut:

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

Og i BSON ville de være:

Dokumentforespørsel = nytt dokument ("ferdigheter", nytt dokument ("$ elemMatch", nytt dokument ("$ ekv.", "Vår"))); Dokumentoppdatering = nytt dokument ("$ push", nytt dokument ("ferdigheter", "sikkerhet")); collection.updateMany (spørring, oppdatering); 

3.5. Slett

Slett spørringer i MongoDB bruker samme syntaks som søk. Vi gir ganske enkelt et dokument som spesifiserer ett eller flere kriterier som skal samsvares.

La oss for eksempel si at vi fant en feil i medarbeiderdatabasen vår og ved et uhell opprettet ansatte a med en negativ verdi i mange år. For å finne dem alle, vil vi bruke følgende JSON:

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

Tilsvarende BSON-dokument ville være:

Dokumentforespørsel = nytt dokument ("år_av_service", nytt dokument ("$ lt", 0)); collection.deleteMany (spørring);

4. Konklusjon

I denne opplæringen har vi sett en grunnleggende introduksjon til å bygge MongoDB-spørsmål ved hjelp av BSON-biblioteket. Ved å bare bruke BSON API implementerte vi grunnleggende CRUD-operasjoner for en MongoDB-samling.

Det vi ikke har dekket er mer avanserte emner som projeksjoner, aggregasjoner, geospatiale spørsmål, bulkoperasjoner og mer. Alle disse er mulig bare ved hjelp av BSON-biblioteket. Eksemplene vi har sett her danner byggesteinene vi vil bruke til å implementere disse mer avanserte operasjonene.

Som alltid kan du finne kodeeksemplene ovenfor i GitHub-repoen.


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