MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Semua yang Perlu Anda Ketahui Tentang Klien MongoDB

Jika Anda telah menjadi sistem manajemen basis data relasional untuk beberapa waktu sekarang, Anda mungkin menemukan nama MongoDB. Pertama kali diperkenalkan pada tahun 2009, saat ini mongoDb adalah salah satu sistem manajemen basis data relasional paling populer di industri ini. Alasan utama di balik popularitasnya yang gila meskipun kehadiran manajer perangkat lunak basis data relasional yang lebih tua seperti MySql hadir di pasar adalah banyaknya angka dan keserbagunaan yang dibawanya ke meja. Penggunaan MongoDB menghilangkan banyak kebutuhan, salah satunya adalah kebutuhan untuk membuat database dan menentukan tipe data setiap kali proyek baru dimulai. Agenda artikel klien MongoDB:

  • Prasyarat untuk Klien MongoDB
  • Membuat proyek di Maven
  • Menambahkan layanan istirahat JSON pertama Anda
  • Mengonfigurasi database MongoDB
  • Menjalankan database MongoDB yang dikonfigurasi
  • Membuat bagian depan
  • Menyederhanakan klien MongoDB menggunakan codec BSON
  • Kode Akhir

Tetapi untuk mencapai fungsionalitas maksimum dari MongoDB, kita harus mengenal klien MongoDB dan dalam artikel ini, kita akan membahasnya.

Prasyarat untuk Klien MongoDB

Agar artikel ini lengkap, Anda harus memenuhi prasyarat berikut terlebih dahulu.

Sudah ada IDE di sistem Anda.
Java Development Kit atau JDK versi 1.8 dan di atasnya diinstal dengan Java_HOME yang dikonfigurasi dengan benar.
Docker atau MongoDB diinstal.
Apache Maven versi 3.5.3 dan yang lebih baru.

Arsitektur yang telah kami buat dan gunakan dalam panduan ini adalah salah satu yang paling sederhana. Ketika dijalankan, pengguna dapat dengan mudah menambahkan data dan elemen dalam daftar, setelah itu secara otomatis akan diperbarui dalam database.

Seiring dengan ini, kami telah memastikan bahwa semua komunikasi antara data dan server ada di JSON dan semua data disimpan di MongoDB.

Memulai

Untuk memulai proyek ini, ikuti langkah-langkah yang diuraikan di bawah ini.

Langkah #1:Membuat proyek di Maven

Langkah pertama adalah selalu membuat proyek baru dan untuk melakukannya, gunakan kode berikut.

mvn io.quarkus:quarkus-maven-plugin:0.22.0:create -DprojectGroupId=org.acme -DprojectArtifactId=using-mongodb-client -DclassName="org.acme.rest.json.FruitResource" -Dpath="/fruits" -Dextensions="resteasy-jsonb,mongodb-client"

Saat Anda menjalankan perintah di atas, IDE akan mengimpor klien JSON-B, MongoDb, serta RESTEAsy/JAX-RS ke sistem Anda.

Melanjutkan dengan Langkah 2.

Langkah #2:Menambahkan layanan istirahat JSON pertama Anda

Untuk melakukannya, gunakan kode di bawah ini.package org.acme.rest.json;import java.util.Objects;public class Fruit {private String name;private String description;public Fruit() {}public Fruit (Nama string, Deskripsi string) {this.name =name;this.description =description;}public String getName() {return name;}public void setName(Nama string) {this.name =name;}public String getDescription( ) {return description;}public void setDescription(String description) {this.description =description;}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Fruit)) {return false;}Buah lainnya =(Buah) obj;return Objects.equals(other.name, this.name);}@Overridepublic int hashCode() {return Objects.hash(this.name);}}

Dengan contoh di atas, kita sudah terlebih dahulu membuat Fruit yang nantinya akan digunakan dalam program.

Selanjutnya kita perlu membuat file org.acme.rest.json.FruitService yang akan menjadi lapisan pengguna aplikasi kita. Untuk melakukannya, gunakan kode di bawah ini.

paket org.acme.rest.json;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import org.bson.Document;import javax.enterprise .context.ApplicationScoped;import javax.inject.Inject;import java.util.ArrayList;import java.util.List;@ApplicationScopedpublic class FruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>( );MongoCursor cursor =getCollection().find().iterator();try {sementara (kursor.hasNext()) {Document document =cursor.next();Buah buah =new Fruit();fruit.setName(document .getString("name"));fruit.setDescription(document.getString("description"));list.add(fruit);}} akhirnya {cursor.close();}daftar kembali;}public void add(Buah buah){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());getCollection().insertOne(document);}private MongoCollection getCollection (){kembalikan mongoClient.getDatabase("fruit").getCollection ("fruit");}}Sekarang kita perlu mengedit kelas org.acme.rest.json.FruitResource agar sesuai dengan kebutuhan kita. Untuk melakukannya, gunakan kode di bawah ini.@Path("/fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)public class FruitResource {@Inject FruitService fruitService;@GETpublic List list() {return fruitService.list();}@POSTpublic Daftar add(Buah buah) {fruitService.add(fruit);return list();}}

Melanjutkan dengan Langkah 3.

Langkah #3:Mengonfigurasi database mongoDb

Sintaks serta kode standar untuk mengkonfigurasi database mongoDb adalah seperti yang diberikan di bawah ini.

# konfigurasikan klien mongoDB untuk kumpulan replika dua nodequarkus.mongodb.connection-string =mongodb://mongo1:27017,mongo2:27017

Dalam kasus kami, kami akan menggunakan kode berikut untuk mengkonfigurasi database.

# konfigurasikan klien mongoDB untuk kumpulan replika dua nodequarkus.mongodb.connection-string =mongodb://localhost:27017

Melanjutkan dengan Langkah 4.

Langkah #4:Menjalankan database MongoDB yang dikonfigurasi

Langkah selanjutnya adalah menjalankan database MongoDB yang baru saja kita buat. Untuk melakukannya, gunakan kode di bawah ini.

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

Lanjutkan dengan Langkah 5.

Langkah #5:Membuat bagian depan

Sekarang setelah semua pekerjaan di backend aplikasi selesai, mari kita lihat kode yang digunakan untuk mengkode front end aplikasi kita.

paket org.acme.rest.json;import io.quarkus.mongodb.ReactiveMongoClient;import io.quarkus.mongodb.ReactiveMongoCollection;import org.bson.Document;import javax.enterprise.context.ApplicationScoped;impor javax.inject .Inject;import java.util.List;import java.util.concurrent.CompletionStage;@ApplicationScopedpublic class ReactiveFruitService {@InjectReactiveMongoClient mongoClient;public CompletionStage list(){return getCollection().find().map(doc -> {Buah buah =new Fruit();fruit.setName(doc.getString("name"));fruit.setDescription(doc.getString("description"));kembalikan buah;}).toList().run( );}public CompletionStage add(Buah buah){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());return getCollection(). insertOne(document);}pribadi ReactiveMongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit");}}paket org.acme.rest.json;import javax.inject.Inject;import javax. ws.rs.*:imp ort 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)public class ReactiveFruitResource {@Inject ReactiveFruitService fruitService;@GETpublic CompletionStage list() {return fruitService.list();}@POSTpublic CompletionStage add(Buah buah) {fruitService.add(buah);return list(); }}

Dalam contoh di atas, kami menggunakan klien mongoDb reaktif untuk memfasilitasi pembentukan front end.

Melanjutkan dengan Langkah 6.

Langkah #6:Menyederhanakan klien mongoDb menggunakan codec BSON

Untuk melakukannya, gunakan kode di bawah ini.

paket org.acme.rest.json.codec;import com.mongodb.MongoClient;import org.acme.rest.json.Fruit;import org.bson.*;import org.bson.codecs.Codec;import org .bson.codecs.CollectibleCodec;import org.bson.codecs.DecoderContext;import org.bson.codecs.EncoderContext;import java.util.UUID;FruitCodec kelas publik mengimplementasikan CollectibleCodec {private final Codec documentCodec;public FruitCodec() {this. documentCodec =MongoClient.getDefaultCodecRegistry().get(Document.class);}@Overridepublic void encode(penulis BsonWriter, Fruit fruit, EncoderContext encoderContext) {Document doc =new Document();doc.put("name", fruit.getName ());doc.put("description", fruit.getDescription());documentCodec.encode(writer, doc, encoderContext);}@Overridepublic Class getEncoderClass() {return Fruit.class;}@Overridepublic Fruit generateIdIfAbsentFromDocument(Buah document) {jika (!documentHasId(document))) {document.setId(UUID.randomUUID().toString());}kembalikan dokumen;}@Overridepublic boolean documentHasId(Buah dokumen ment) {kembalikan document.getId() !=null;}@Overridepublic BsonValue getDocumentId(Fruit document) {kembalikan BsonString baru(document.getId());}@Overridepublic Fruit decode (pembaca BsonReader, DecoderContext decoderContext) {Dokumen dokumen =documentCodec.decode(reader, decoderContext);Buah buah =new Fruit();if (document.getString("id") !=null) {fruit.setId(document.getString("id"));}fruit.setName (document.getString("name"));fruit.setDescription(document.getString("description"));kembalikan buah;}}

Sekarang kita akan menggunakan CodecProvider untuk menautkan ini ke kelas Fruit yang sudah ada.

paket org.acme.rest.json.codec;import org.acme.rest.json.Fruit;import org.bson.codecs.Codec;import org.bson.codecs.configuration.CodecProvider;import org.bson. codecs.configuration.CodecRegistry;public class FruitCodecProvider mengimplementasikan CodecProvider {@Overridepublic Codec get(Class clazz, CodecRegistry registry) {if (clazz ==Fruit.class) {return (Codec) new FruitCodec();}return null;}} 

Melanjutkan dengan Langkah 7.

Langkah #7:Kode Akhir

Kode terakhir untuk aplikasi ini, akan terlihat seperti ini.

paket org.acme.rest.json;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import javax.enterprise.context.ApplicationScoped;impor javax .inject.Inject;import java.util.ArrayList;import java.util.List;@ApplicationScopedpublic class CodecFruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>();MongoCursor kursor =getCollection( ).find().iterator();try {sementara (cursor.hasNext()) {list.add(cursor.next());}} akhirnya {cursor.close();}return list;}public void add (Buah buah){getCollection().insertOne(fruit);}pribadi MongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit", Fruit.class);}}

Kesimpulan

Sekarang Anda tahu cara mengonfigurasi dan menggunakan klien MongoDB di sistem Anda. Silakan coba kode ini di sistem Anda dan beri tahu kami pengalaman Anda.

Ringkasan Artikel

Pelajari semua tentang klien MongoDB dan bagaimana Anda dapat mengonfigurasi yang sama di sistem Anda untuk berbagai penggunaan. Baca terus untuk mengetahui lebih lanjut.

Dengan ini, kita sampai pada akhir Klien MongoDB artikel.

Batch Mendatang Untuk Kursus Pelatihan Sertifikasi MongoDB
Nama Kursus Tanggal
Kursus Pelatihan Sertifikasi MongoDB

Kelas Dimulai pada 4 Juni 2022

4 Juni

SAT&SUN (Akhir Pekan Batch)
Lihat Detail
Kursus Pelatihan Sertifikasi MongoDB

Kelas Dimulai pada 6 Agustus 2022

6 Agustus

SAT&SUN (Akhir Pekan Batch)
Lihat Detail

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $toUpper

  2. Koneksi MongoDb ditolak

  3. Bagaimana Mengelola Database Besar Secara Efektif

  4. 3 Cara Menjatuhkan Indeks di MongoDB

  5. Cara Membuat Indeks dengan Nama Tertentu di MongoDB