MongoDB BSON-gids

1. Inleiding

In deze tutorial zullen we BSON bekijken en hoe we het kunnen gebruiken om te communiceren met MongoDB.

Nu valt een diepgaande beschrijving van MongoDB en al zijn mogelijkheden buiten het bestek van dit artikel. Het is echter handig om een ​​paar sleutelconcepten te begrijpen.

MongoDB is een gedistribueerde NoSQL-engine voor documentopslag. Documenten worden opgeslagen als BSON-gegevens en gegroepeerd in verzamelingen. Documenten in een verzameling zijn analoog aan rijen in een relationele databasetabel.

Bekijk het inleidende MongoDB-artikel voor een meer diepgaande blik.

2. Wat is BSON?

BSON staat voor Binaire JSON. Het is een protocol voor binaire serialisatie van JSON-achtige gegevens.

JSON is een indeling voor gegevensuitwisseling die populair is in moderne webservices. Het biedt een flexibele manier om complexe datastructuren weer te geven.

BSON biedt verschillende voordelen ten opzichte van het gebruik van gewone JSON:

  • Compact: in de meeste gevallen wordt een BSON-structuur vereist minder ruimte dan zijn JSON-equivalent
  • Gegevenstypen: BSON biedt aanvullende gegevenstypen niet gevonden in gewone JSON, zoals Datum en BinData

Een van de belangrijkste voordelen van het gebruik van BSON is dat het gemakkelijk te doorkruisen is. BSON-documenten bevatten aanvullende metadata waarmee de velden van een document gemakkelijk kunnen worden gemanipuleerd, zonder dat u het hele document zelf hoeft te lezen.

3. Het MongoDB-stuurprogramma

Nu we een basiskennis hebben van BSON en MongoDB, gaan we kijken hoe we ze samen kunnen gebruiken. We zullen ons concentreren op de belangrijkste acties van het CRUD-acroniem (Create, Read, Update, Delete).

MongoDB biedt softwarestuurprogramma's voor de meeste moderne programmeertalen. De stuurprogramma's zijn bovenop de BSON-bibliotheek gebouwd, wat betekent dat we direct met de BSON API werken bij het bouwen van queries. Zie onze gids voor de MongoDB-zoektaal voor meer informatie.

In deze sectie zullen we kijken naar het gebruik van het stuurprogramma om verbinding te maken met een cluster en het gebruik van de BSON API om verschillende soorten zoekopdrachten uit te voeren. Merk op dat de MongoDB-driver een Filters klasse die ons kan helpen om compactere code te schrijven. Voor deze zelfstudie zullen we ons echter uitsluitend richten op het gebruik van de kern-BSON-API.

Als alternatief voor het rechtstreeks gebruiken van de MongoDB-driver en BSON, bekijk dan onze Spring Data MongoDB-gids.

3.1. Verbinden

Om aan de slag te gaan, voegen we eerst de MongoDB-driver als afhankelijkheid toe aan onze applicatie:

 org.mongodb mongodb-driver-sync 3.10.1 

Vervolgens maken we een verbinding met een MongoDB-database en -verzameling:

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

De overige secties zullen kijken naar het maken van query's met behulp van de verzameling referentie.

3.2. Invoegen

Laten we zeggen dat we de volgende JSON hebben die we als een nieuw document in een medewerkers verzameling:

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

Dit voorbeeld-JSON toont de meest voorkomende gegevenstypen die we zouden tegenkomen bij MongoDB-documenten: tekst, numeriek, arrays en ingesloten documenten.

Om dit in te voegen met BSON, zouden we MongoDB's gebruiken Document API:

Document medewerker = nieuw 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", nieuw document () .append ("first_name", "Sally") .append (" last_name "," Johanson ")); collection.insertOne (medewerker); 

De Document class is de primaire API die wordt gebruikt in BSON. Het breidt de Java uit Kaart interface en bevat verschillende overbelaste methoden. Dit maakt het gemakkelijk om te werken met zowel native types als algemene objecten zoals object-ID's, datums en lijsten.

3.3. Vind

Om een ​​document in MongoDB te vinden, bieden we een zoekdocument dat specificeert op welke velden moet worden gezocht. Om bijvoorbeeld alle documenten te vinden met de achternaam "Smit", gebruiken we het volgende JSON-document:

{"last_name": "Smith"}

Geschreven in BSON zou dit zijn:

Documentquery = nieuw document ("achternaam", "Smit"); Lijstresultaten = nieuwe ArrayList (); collection.find (query) .into (resultaten);

"Zoek" -query's kunnen meerdere velden accepteren en het standaardgedrag is om de logische te gebruiken en operator om ze te combineren. Dit betekent dat alleen documenten die aan alle velden voldoen, worden geretourneerd.

Om dit te omzeilen, biedt MongoDB de of query-operator:

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

Dit vindt alle documenten met de voornaam "Joe" of de achternaam "Smith". Om dit als BSON te schrijven, zouden we een genest Document net als de invoegquery hierboven:

Documentquery = nieuw document ("$ of", Arrays.asList (nieuw document ("achternaam", "Smith"), nieuw document ("voornaam", "Joe"))); Lijstresultaten = nieuwe ArrayList (); collection.find (query) .into (resultaten);

3.4. Bijwerken

Updatequery's zijn een beetje anders in MongoDB omdat ze twee documenten vereisen:

  1. De filtercriteria om een ​​of meer documenten te vinden
  2. Een updatedocument waarin wordt aangegeven welke velden moeten worden gewijzigd

Laten we bijvoorbeeld zeggen dat we een "beveiligings" -vaardigheid willen toevoegen aan elke werknemer die al een "lente" -vaardigheid heeft. Het eerste document zal alle werknemers met "lente" -vaardigheden vinden, en het tweede zal een nieuwe "beveiliging" -item toevoegen aan hun vaardighedenreeks.

In JSON zien deze twee query's er als volgt uit:

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

En in BSON zouden ze zijn:

Documentquery = nieuw document ("vaardigheden", nieuw document ("$ elemMatch", nieuw document ("$ eq", "spring"))); Document update = nieuw document ("$ push", nieuw document ("vaardigheden", "beveiliging")); collection.updateMany (query, update); 

3.5. Verwijderen

Voor het verwijderen van query's in MongoDB wordt dezelfde syntaxis gebruikt als voor het vinden van query's. We leveren eenvoudigweg een document met een of meer criteria waaraan moet worden voldaan.

Laten we bijvoorbeeld zeggen dat we een bug in onze werknemersdatabase hebben gevonden en per ongeluk werknemers hebben aangemaakt met een negatieve waarde voor dienstjaren. Om ze allemaal te vinden, zouden we de volgende JSON gebruiken:

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

Het equivalente BSON-document zou zijn:

Documentquery = nieuw document ("years_of_service", nieuw document ("$ lt", 0)); collection.deleteMany (zoekopdracht);

4. Conclusie

In deze zelfstudie hebben we een basisinleiding gezien voor het bouwen van MongoDB-query's met behulp van de BSON-bibliotheek. Met alleen de BSON API hebben we basis CRUD-bewerkingen geïmplementeerd voor een MongoDB-verzameling.

Wat we niet hebben behandeld, zijn meer geavanceerde onderwerpen zoals projecties, aggregaties, geospatiale query's, bulkbewerkingen en meer. Dit alles is mogelijk met alleen de BSON-bibliotheek. De voorbeelden die we hier hebben gezien, vormen de bouwstenen die we zouden gebruiken om deze meer geavanceerde bewerkingen te implementeren.

Zoals altijd kun je de codevoorbeelden hierboven vinden in onze GitHub-opslagplaats.


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