Όλα όσα πρέπει να ξέρετε για τον πελάτη MongoDB



Αυτό το άρθρο θα σας δώσει μια λεπτομερή και περιεκτική γνώση του MongoDB Client με όλες τις δυνατότητες και τις χρήσεις του.

Εάν έχετε κάποια μορφή σχεσιακού συστήματος διαχείρισης βάσεων δεδομένων εδώ και αρκετό καιρό, πιθανότατα έχετε συναντήσει το όνομα του . Πρώτα παρουσιάστηκε το 2009, σήμερα το mongoDb είναι ένα από τα πιο δημοφιλή συστήματα σχεσιακής διαχείρισης βάσεων δεδομένων στον κλάδο. Ο κύριος λόγος πίσω από την τρελή δημοτικότητά του παρά την παρουσία παλαιότερων σχετικών διαχειριστών λογισμικού βάσεων δεδομένων όπως το MySql που υπάρχουν στην αγορά είναι το ευρύ φάσμα αριθμών και η μεγάλη ευελιξία που φέρνει στο τραπέζι. Η χρήση του MongoDB εξαλείφει πολλές ανάγκες, μεταξύ των οποίων είναι η ανάγκη δημιουργίας βάσης δεδομένων και ο ορισμός του τύπου δεδομένων κάθε φορά που ξεκινά ένα νέο έργο. Ατζέντα του άρθρου πελάτη MongoDB:

πώς να χρησιμοποιήσετε το άτομο για python





Αλλά για να επιτύχουμε τη μέγιστη λειτουργικότητα από το MongoDB, πρέπει να είμαστε εξοικειωμένοι με τον πελάτη MongoDB και σε αυτό το άρθρο, θα το συζητήσουμε ακριβώς.

Προαπαιτούμενα για τον πελάτη MongoDB

Για να είναι πλήρως αυτό το άρθρο, θα πρέπει πρώτα να πληροίτε τις ακόλουθες προϋποθέσεις.



Έχετε ήδη ένα IDE στο σύστημά σας.
Το Java Development Kit ή JDK έκδοση 1.8 και άνω εγκαθίσταται με το JAVA_HOME διαμορφωμένο σωστά.
Εγκατεστημένο το Docker ή το MongoDB.
Apache Maven έκδοση 3.5.3 και άνω.

Η αρχιτεκτονική που έχουμε δημιουργήσει και χρησιμοποιήσει σε αυτόν τον οδηγό είναι από τις πιο απλές. Όταν εκτελεστεί ο χρήστης μπορεί εύκολα να προσθέσει δεδομένα και στοιχεία σε μια λίστα, μετά την οποία θα ενημερώνεται αυτόματα στη βάση δεδομένων.

Λογότυπο πελάτη MongoDB



Μαζί με αυτό, έχουμε διασφαλίσει ότι όλη η επικοινωνία μεταξύ των δεδομένων και του διακομιστή είναι στο JSON και όλα τα δεδομένα είναι αποθηκευμένα στο MongoDB.

Ξεκινώντας

Για να ξεκινήσετε με αυτό το έργο, ακολουθήστε τα βήματα που περιγράφονται παρακάτω.

Βήμα 1: Δημιουργία του έργου στο Maven

Το πρώτο βήμα είναι πάντα η δημιουργία ενός νέου έργου και για να το κάνετε αυτό, χρησιμοποιήστε τον ακόλουθο κώδικα.

mvn io.quarkus: quarkus-maven-plugin: 0.22.0: create -DprojectGroupId = org.acme -DprojectArtifactId = using-mongodb-client -DclassName = 'org.acme.rest.json.FruitResource' -Dpath = '/ φρούτα '-Επεκτάσεις =' resteasy-jsonb, mongodb-client '

Όταν εκτελείτε την παραπάνω εντολή, το IDE θα εισαγάγει τους πελάτες JSON-B, MongoDb καθώς και RESTEasy / JAX-RS στο σύστημά σας.

Προχωρώντας με το Βήμα 2.

Βήμα 2: Προσθήκη της πρώτης υπηρεσίας ανάπαυσης JSON

Για να το κάνετε αυτό, χρησιμοποιήστε τον παρακάτω κώδικα. πακέτο org.acme.rest.json import java.util.Objects public class Fruit {private String name private string String public Fruit () {} public Fruit (String name, String description) {this.name = name this.description = description } δημόσια συμβολοσειρά getName () {return name} public void setName (String name) {this.name = name} public String getDescription () {return description} public void setDescription (String description) {this.description = description} @Override public boolean ισούται με (Object obj) {if (! (obj instanceof Fruit)) {return false} Fruit other = (Fruit) obj return Objects.equals (other.name, this.name)} @Override public int hashCode () {return Objects.hash (this.name)}}

Με το παραπάνω παράδειγμα, δημιουργήσαμε πρώτα τα φρούτα που θα χρησιμοποιηθούν αργότερα στο πρόγραμμα.

Στη συνέχεια πρέπει να δημιουργήσουμε το αρχείο org.acme.rest.json.FruitService που θα είναι το επίπεδο χρήστη της εφαρμογής μας. Για να το κάνετε αυτό, χρησιμοποιήστε τον παρακάτω κώδικα.

πακέτο org.acme.rest.json εισαγωγή com.mongodb.client.MongoClient εισαγωγή com.mongodb.client.MongoCollection import com.mongodb.client.MongoCursor import org.bson.Document import javax.enterprise.context.ApplicationScoped import javax.inject Εισαγωγή εισαγωγής java.util.ArrayList εισαγωγή java.util.List @ApplicationScoped δημόσια τάξη FruitService {@Inject MongoClient mongoClient λίστα δημόσιων λιστών () {List list = new ArrayList () MongoCursor δρομέας = getCollection (). Find.) Iterator ( ) δοκιμάστε {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('περιγραφή) ')) list.add (fruit)}} τέλος {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('περιγραφή', fruit.getDescription ()) getCollection (). insertOne (document)} ιδιωτικό MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Τώρα πρέπει να επεξεργαστούμε την τάξη org.acme.rest.json.FruitResource ώστε να ανταποκρίνεται στις ανάγκες μας. Για να το κάνετε αυτό, χρησιμοποιήστε τον παρακάτω κώδικα. @Path ('/ fruit') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) δημόσια τάξη FruitResource {@Inject FruitService fruitService @GET δημόσια λίστα λίστας () {return fruitService.list ()} @POST δημόσια λίστα προσθήκη (Fruit fruit) {fruitService.add (fruit) λίστα επιστροφής ()}}

Προχωρώντας με το Βήμα 3.

Βήμα # 3: Διαμόρφωση της βάσης δεδομένων mongoDb

Η σύνταξη καθώς και ο τυπικός κώδικας για τη διαμόρφωση της βάσης δεδομένων mongoDb είναι όπως δίνεται παρακάτω.

# διαμόρφωση του προγράμματος-πελάτη mongoDB για ένα σύνολο αντιγράφων δύο κόμβων quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Στην περίπτωσή μας, θα χρησιμοποιήσουμε τον ακόλουθο κώδικα για να διαμορφώσουμε τη βάση δεδομένων.

# διαμόρφωση του προγράμματος-πελάτη mongoDB για ένα σύνολο αντιγράφων δύο κόμβων quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Προχωρώντας με το Βήμα 4.

Βήμα # 4: Εκτέλεση της διαμορφωμένης βάσης δεδομένων MongoDB

Το επόμενο βήμα είναι να εκτελέσετε τη βάση δεδομένων MongoDB που μόλις δημιουργήσαμε. Για να το κάνετε αυτό, χρησιμοποιήστε τον παρακάτω κώδικα.

docker run -ti --rm -p 27017: 27017 mongo: 4.0

Προχωρώντας με το Βήμα 5.

Βήμα # 5: Κάνοντας το μπροστινό μέρος

Τώρα που έχει ολοκληρωθεί όλη η εργασία στο backend της εφαρμογής, ας ρίξουμε μια ματιά στον κώδικα που χρησιμοποιείται για τον κωδικό της διεπαφής της εφαρμογής μας.

πακέτο org.acme.rest.json εισαγωγή io.quarkus.mongodb.ReactiveMongoClient εισαγωγή io.quarkus.mongodb.ReactiveMongoCollection import org.bson.Document import javax.enterprise.context.ApplicationScoped import javax.inject.Inject import java.util.List import java.util.concurrent.CompletionStage @ApplicationScoped public class ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {return getCollection (). εύρεση (). map (doc -> {Fruit fruit = new Fruit () fruit.setName () doc.getString ('name')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Fruit fruit) {Document document = νέο έγγραφο () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('φρούτα') ) .getCollection ('fruit')}} πακέτο org.acme.rest.json import javax.inject.Inject import javax.ws.rs. * i mport javax.ws.rs.core.MediaType import java.util.List import java.util.concurrent.CompletionStage @Path ('/ reactive_fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) δημόσια τάξη ReactiveFruit @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) λίστα επιστροφής ()}}

Στο παραπάνω παράδειγμα, χρησιμοποιούμε ένας αντιδραστικός πελάτης mongoDb για τη διευκόλυνση του σχηματισμού της διεπαφής.

Προχωρώντας με το Βήμα 6.

Βήμα # 6: Απλοποίηση του προγράμματος-πελάτη mongoDb χρησιμοποιώντας κωδικοποιητή BSON

Για να το κάνετε αυτό, χρησιμοποιήστε τον παρακάτω κώδικα.

πακέτο org.acme.rest.json.codec εισαγωγή com.mongodb.MongoClient εισαγωγή org.acme.rest.json.Fruit import org.bson. * import org.bson.codecs.Codec import org.bson.codecs.CollectibleCodec εισαγωγή org .bson.codecs.DecoderContext import org.bson.codecs.EncoderContext import java.util.UUID δημόσια τάξη FruitCodec εφαρμόζει το CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCod (get) )} @Override public void encode (BsonWriter author, Fruit fruit, EncoderContext encoderContext) {Document doc = new Document () doc.put ('name', fruit.getName ()) doc.put ('περιγραφή', fruit.getDescription) ()) documentCodec.encode (συγγραφέας, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit createIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} επιστροφή εγγράφου} @Override public boolean documentHasId ( Έγγραφο φρούτων) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return new BsonString (document.getId ())} @Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Document document = documentCodec.decode (reader, decoderContext) Fruit fruit = new Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (έγγραφο .getString ('name')) fruit.setDescription (document.getString ('description')) επιστροφή φρούτων}}

Τώρα θα χρησιμοποιήσουμε ένα CodecProvider για να το συνδέσουμε με την τάξη Fruit που υπάρχει ήδη.

πακέτο org.acme.rest.json.codec εισαγωγή org.acme.rest.json.Fruit import org.bson.codecs.Codec import org.bson.codecs.configuration.CodecProvider εισαγωγή org.bson.codecs.configuration.CodecRegistry δημόσια τάξη Το FruitCodecProvider υλοποιεί το CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Προχωρώντας με το Βήμα 7.

Βήμα # 7: Τελικός κώδικας

Ο τελικός κωδικός για αυτήν την εφαρμογή, θα μοιάζει με αυτό.

πακέτο org.acme.rest.json import com.mongodb.client.MongoClient import com.mongodb.client.MongoCollection import com.mongodb.client.MongoCursor import javax.enterprise.context.ApplicationScoped import javax.inject.Inject import java.util .ArrayList import java.util.List @ApplicationScoped public class CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () δοκιμάστε {ενώ (δρομέας .hasNext ()) {list.add (cursor.next ())}} τελικά {cursor.close ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} ιδιωτικό MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}}

συμπέρασμα

Τώρα ξέρετε πώς να ρυθμίσετε τις παραμέτρους και να χρησιμοποιήσετε τον πελάτη MongoDB στο σύστημά σας. Προχωρήστε και δοκιμάστε αυτούς τους κωδικούς στο σύστημά σας και ενημερώστε μας για την εμπειρία σας.

Περίληψη άρθρου

Μάθετε τα πάντα για τον πελάτη MongoDB και πώς μπορείτε να ρυθμίσετε το ίδιο στο σύστημά σας για διάφορες χρήσεις. Διαβάστε παρακάτω για να μάθετε περισσότερα.

Με αυτό, φτάνουμε στο τέλος του ' Πελάτης MongoDB ' άρθρο.