Mọi thứ bạn cần biết về ứng dụng khách MongoDB



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về MongoDB Client với tất cả các tính năng và Công dụng của nó.

Nếu bạn đã từng là bất kỳ hình thức nào của hệ thống quản lý cơ sở dữ liệu quan hệ trong một thời gian, có thể bạn đã bắt gặp tên của . Được giới thiệu lần đầu tiên vào năm 2009, ngày nay mongoDb là một trong những hệ quản trị cơ sở dữ liệu quan hệ phổ biến nhất trong ngành. Lý do chính đằng sau sự phổ biến điên cuồng của nó bất chấp sự hiện diện của các phần mềm quản lý cơ sở dữ liệu quan hệ cũ như MySql có mặt trên thị trường là số lượng đa dạng và tính linh hoạt tuyệt vời mà nó mang lại. Việc sử dụng MongoDB loại bỏ nhiều nhu cầu, một trong số đó là nhu cầu tạo cơ sở dữ liệu và xác định kiểu dữ liệu mỗi khi một dự án mới được bắt đầu. Chương trình của bài viết về ứng dụng khách MongoDB:





Nhưng để đạt được chức năng tối đa của MongoDB, người ta cần phải làm quen với ứng dụng khách MongoDB và trong bài viết này, chúng ta sẽ thảo luận về điều đó.

Điều kiện tiên quyết cho ứng dụng khách MongoDB

Để có được đầy đủ bài viết này, trước tiên bạn cần đáp ứng các điều kiện tiên quyết sau.



Đã có IDE trong hệ thống của bạn.
Bộ phát triển Java hoặc JDK phiên bản 1.8 trở lên được cài đặt với JAVA_HOME được định cấu hình đúng cách.
Docker hoặc MongoDB đã được cài đặt.
Apache Maven phiên bản 3.5.3 trở lên.

Kiến trúc mà chúng tôi đã tạo và sử dụng trong hướng dẫn này là một trong những kiến ​​trúc đơn giản nhất. Khi thực thi, người dùng có thể dễ dàng thêm dữ liệu và các phần tử trong danh sách, sau đó nó sẽ tự động được cập nhật trong cơ sở dữ liệu.

Biểu trưng ứng dụng khách MongoDB



Cùng với điều này, chúng tôi đã đảm bảo rằng tất cả giao tiếp giữa dữ liệu và máy chủ là trong JSON và tất cả dữ liệu được lưu trữ trong MongoDB.

Bắt đầu

Để bắt đầu với dự án này, hãy làm theo các bước được nêu dưới đây.

Bước # 1: Tạo dự án trên Maven

Bước đầu tiên luôn là tạo một dự án mới và để thực hiện việc này, hãy sử dụng đoạn mã sau.

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

Khi bạn chạy lệnh trên, IDE sẽ nhập các máy khách JSON-B, MongoDb cũng như RESTEasy / JAX-RS vào hệ thống của bạn.

Tiếp tục với Bước 2.

Bước # 2: Thêm dịch vụ nghỉ ngơi JSON đầu tiên của bạn

Để làm điều này, hãy sử dụng mã bên dưới. package org.acme.rest.json import java.util.Objects public class Fruit {private String name private String description public Fruit () {} public Fruit (String name, String description) {this.name = name this.description = description } public String 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)}}

Với ví dụ trên, đầu tiên chúng ta đã tạo Fruit mà sau này sẽ được sử dụng trong chương trình.

Tiếp theo, chúng ta cần tạo tệp org.acme.rest.json.FruitService, đây sẽ là lớp người dùng của ứng dụng của chúng ta. Để làm điều này, hãy sử dụng mã bên dưới.

c ++ đi tới
package 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 @ApplicationScoped public class FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator ( ) try {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} last {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Bây giờ chúng ta cần chỉnh sửa lớp org.acme.rest.json.FruitResource cho phù hợp với nhu cầu của chúng ta. Để làm điều này, hãy sử dụng mã bên dưới. @Path ('/ fruit') @Productiones (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) public class FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Trái cây trái cây) {fruitService.add (fruit) danh sách trả về ()}}

Tiếp tục với Bước 3.

Bước # 3: Định cấu hình cơ sở dữ liệu mongoDb

Cú pháp cũng như mã chuẩn để cấu hình cơ sở dữ liệu mongoDb như được đưa ra bên dưới.

# cấu hình ứng dụng khách mongoDB cho một tập hợp bản sao của hai nút quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng đoạn mã sau để cấu hình cơ sở dữ liệu.

# cấu hình máy khách mongoDB cho một tập hợp bản sao của hai nút quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Tiếp tục với Bước 4.

Bước # 4: Chạy cơ sở dữ liệu MongoDB đã định cấu hình

Bước tiếp theo là chạy cơ sở dữ liệu MongoDB mà chúng ta vừa tạo. Để làm điều này, hãy sử dụng mã bên dưới.

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

Tiếp tục với Bước 5.

Bước # 5: Tạo giao diện người dùng

Bây giờ tất cả công việc ở phần phụ trợ của ứng dụng đã hoàn tất, chúng ta hãy xem mã được sử dụng để viết mã giao diện người dùng của ứng dụng.

package org.acme.rest.json import io.quarkus.mongodb.ReactiveMongoClient import 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 (). find (). 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 = new Document () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('fruit')}} package 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 ('/ Reative_fruits') @Productiones (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) public class Reactive @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) danh sách trả lại ()}}

Trong ví dụ trên, chúng tôi đang sử dụng một ứng dụng khách mongoDb phản ứng để tạo điều kiện hình thành giao diện người dùng.

Tiếp tục với Bước 6.

Bước # 6: Đơn giản hóa ứng dụng mongoDb bằng codec BSON

Để làm điều này, hãy sử dụng mã bên dưới.

package 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 public class FruitCodec triển khai CollectibleCodec {private cuối Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCassecRegistry (). )} @Override public void encode (BsonWriter writer, Fruit fruit, EncoderContext encoderContext) {Document doc = new Document () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (writer, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (Tài liệu trái cây) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} return document} @Override public boolean documentHasId ( Tài liệu trái cây) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Tài liệu trái cây) {return new BsonString (document.getId ())} @Override public Giải mã trái cây (trình đọc BsonReader, DecoderContext decoderContext) {Tài liệu tài liệu = documentCodec.decode (reader, decoderContext) Fruit fruit = new Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (document .getString ('name')) fruit.setDescription (document.getString ('description')) return fruit}}

Bây giờ chúng ta sẽ sử dụng CodecProvider để liên kết nó với lớp Fruit đã có.

package 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 triển khai CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Tiếp tục với Bước 7.

Bước # 7: Mã cuối cùng

Mã cuối cùng cho ứng dụng này, sẽ giống như thế này.

package 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 () try {while (con trỏ .hasNext ()) {list.add (cursor.next ())}} cuối cùng {cursor.close ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Phần kết luận

Bây giờ bạn đã biết cách cấu hình và sử dụng ứng dụng khách MongoDB trong hệ thống của mình. Hãy tiếp tục và thử các mã này trong hệ thống của bạn và cho chúng tôi biết trải nghiệm của bạn.

Tóm tắt bài viết

Tìm hiểu tất cả về ứng dụng MongoDB và cách bạn có thể định cấu hình tương tự trong hệ thống của mình cho các mục đích sử dụng khác nhau. Đọc để biết thêm chi tiết.

đợi và thông báo trong java

Với điều này, chúng ta đi đến phần cuối của ' Ứng dụng khách MongoDB ' bài báo.