MongoDB BSON Guide

1. Introduktion

I denne vejledning ser vi på BSON, og hvordan vi kan bruge det til at interagere med MongoDB.

Nu er en dybtgående beskrivelse af MongoDB og alle dens muligheder uden for denne artikels anvendelsesområde. Det vil dog være nyttigt at forstå et par nøglebegreber.

MongoDB er en distribueret NoSQL-dokumentlagermotor. Dokumenter gemmes som BSON-data og grupperes sammen i samlinger. Dokumenter i en samling er analoge med rækker i en relationsdatabasetabel.

For et mere dybtgående kig, se på den indledende MongoDB-artikel.

2. Hvad er? BSON?

BSON står for Binær JSON. Det er en protokol til binær serialisering af JSON-lignende data.

JSON er et dataudvekslingsformat, der er populært i moderne webservices. Det giver en fleksibel måde at repræsentere komplekse datastrukturer på.

BSON giver flere fordele i forhold til brug af almindelig JSON:

  • Kompakt: Opbevaring af en i de fleste tilfælde BSON-struktur kræver mindre plads end dens JSON-ækvivalent
  • Datatyper: BSON leverer yderligere datatyper ikke fundet i almindelig JSON, såsom Dato og BinData

En af de største fordele ved at bruge BSON er, at det er let at krydse. BSON-dokumenter indeholder yderligere metadata, der giver mulighed for nem manipulation af felterne i et dokument uden at skulle læse hele dokumentet selv.

3. MongoDB-driveren

Nu hvor vi har en grundlæggende forståelse af BSON og MongoDB, lad os se på, hvordan vi bruger dem sammen. Vi fokuserer på de vigtigste handlinger fra CRUD-akronymet (Create, Read, Update, Delete).

MongoDB leverer softwaredrivere til de fleste moderne programmeringssprog. Driverne er bygget oven på BSON-biblioteket, hvilket betyder, at vi arbejder direkte med BSON API, når vi bygger forespørgsler. For mere information, se vores guide til MongoDB-forespørgselssprog.

I dette afsnit ser vi på at bruge driveren til at oprette forbindelse til en klynge og bruge BSON API til at udføre forskellige typer forespørgsler. Bemærk, at MongoDB-driveren leverer en Filtre klasse, der kan hjælpe os med at skrive mere kompakt kode. Til denne tutorial fokuserer vi dog udelukkende på at bruge core BSON API.

Som et alternativ til at bruge MongoDB-driveren og BSON direkte, se vores Spring Data MongoDB-guide.

3.1. Tilslutning

For at komme i gang tilføjer vi først MongoDB-driveren som en afhængighed i vores applikation:

 org.mongodb mongodb-driver-sync 3.10.1 

Derefter opretter vi en forbindelse til en MongoDB-database og samling:

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

De resterende sektioner vil se på oprettelse af forespørgsler ved hjælp af kollektion reference.

3.2. Indsæt

Lad os sige, at vi har følgende JSON, som vi vil indsætte som et nyt dokument i et medarbejdere kollektion:

{"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 eksempel viser JSON de mest almindelige datatyper, som vi støder på med MongoDB-dokumenter: tekst, numeriske, arrays og indlejrede dokumenter.

For at indsætte dette ved hjælp af BSON bruger vi MongoDB'er Dokument API:

Dokumentmedarbejder = nyt 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", nyt dokument () .append ("first_name", "Sally") .append (" efternavn "," Johanson ")); collection.insertOne (medarbejder); 

Det Dokument klasse er den primære API, der bruges i BSON. Det udvider Java Kort interface og indeholder flere overbelastede metoder. Dette gør det nemt at arbejde med indfødte typer såvel som almindelige objekter såsom objekt-id'er, datoer og lister.

3.3. Finde

For at finde et dokument i MongoDB leverer vi et søgedokument, der specificerer, hvilke felter der skal søges om. For eksempel for at finde alle dokumenter, der har efternavnet "Smith", bruger vi følgende JSON-dokument:

{"last_name": "Smith"}

Skrevet i BSON ville dette være:

Dokumentforespørgsel = nyt dokument ("efternavn", "Smith"); Listeresultater = ny ArrayList (); collection.find (forespørgsel) .into (resultater);

"Find" -forespørgsler kan acceptere flere felter, og standardadfærden er at bruge det logiske og operatør til at kombinere dem. Dette betyder, at kun dokumenter, der matcher alle felter, returneres.

For at omgå dette leverer MongoDB eller forespørgselsoperatør:

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

Dette finder alle dokumenter, der enten har fornavnet “Joe” eller efternavnet “Smith”. For at skrive dette som BSON bruger vi en indlejret Dokument ligesom indsætningsforespørgslen ovenfor:

Dokumentforespørgsel = nyt dokument ("$ eller", Arrays.asList (nyt dokument ("efternavn", "Smith"), nyt dokument ("fornavn", "Joe"))); Listeresultater = ny ArrayList (); collection.find (forespørgsel) .into (resultater);

3.4. Opdatering

Opdateringsforespørgsler er lidt anderledes i MongoDB, fordi de kræver to dokumenter:

  1. Filterkriteriet for at finde et eller flere dokumenter
  2. Et opdateringsdokument, der specificerer, hvilke felter der skal ændres

Lad os for eksempel sige, at vi vil tilføje en "sikkerhed" -kompetence til enhver medarbejder, der allerede har en "spring" -kompetence. Det første dokument finder alle medarbejdere med "spring" -kompetencer, og det andet tilføjer en ny "sikkerhed" -post til deres færdighedsarray.

I JSON ser disse to forespørgsler ud:

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

Og i BSON ville de være:

Dokumentforespørgsel = nyt dokument ("færdigheder", nyt dokument ("$ elemMatch", nyt dokument ("$ eq", "forår"))); Dokumentopdatering = nyt dokument ("$ push", nyt dokument ("færdigheder", "sikkerhed")); collection.updateMany (forespørgsel, opdatering); 

3.5. Slet

Slet forespørgsler i MongoDB bruger den samme syntaks som find forespørgsler. Vi leverer blot et dokument, der specificerer et eller flere kriterier, der skal matche.

Lad os for eksempel sige, at vi fandt en fejl i vores medarbejderdatabase og ved et uheld oprettede medarbejdere med en negativ værdi i mange år. For at finde dem alle ville vi bruge følgende JSON:

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

Det tilsvarende BSON-dokument ville være:

Dokumentforespørgsel = nyt dokument ("år_af_service", nyt dokument ("$ lt", 0)); collection.deleteMany (forespørgsel);

4. Konklusion

I denne vejledning har vi set en grundlæggende introduktion til at opbygge MongoDB-forespørgsler ved hjælp af BSON-biblioteket. Ved kun at bruge BSON API implementerede vi grundlæggende CRUD-operationer til en MongoDB-samling.

Det, vi ikke har dækket, er mere avancerede emner såsom fremskrivninger, sammenlægninger, geospatiale forespørgsler, bulkoperationer og mere. Alle disse er mulige ved hjælp af kun BSON-biblioteket. Eksemplerne, vi har set her, danner de byggesten, vi ville bruge til at implementere disse mere avancerede operationer.

Som altid kan du finde kodeeksemplerne ovenfor i vores GitHub-repo.


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