THAO TÁC VỚI MONGODB TRONG JAVA

MongoDB là một NoSQL database, cho phép chúng ta có thể lưu trữ những kiểu dữ liệu phức tạp, không có cấu trúc nhất định. Trong bài viết này, Hybrid Technologies sẽ hướng dẫn các bạn những bước cơ bản để làm việc với MongoDB trong các ứng dụng Java, hãy cùng khám phá nhé!

Đầu tiên, hãy tạo mới một Maven project để làm ví dụ:

MongoDB

Tương tự như các hệ thống database khác, để làm việc với Java, chúng ta cần khai báo để sử dụng Driver của MongoDB trong ứng dụng của mình.

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.7.0</version>
</dependency>

Để kết nối tới MongoDB, chúng ta sẽ sử dụng đối tượng MongoClient từ thư viện Driver của nó với khai báo như sau:

MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
MongoClient client = new MongoClient(uri);
 
Trong đó đối tượng MongoClientURI là một trong những đối tượng sẽ quản lý thông tin về MongoDB bao gồm IP address và port mà MongoDB đang chạy. Còn đối tượng MongoClient sẽ là đối tượng đảm nhiệm vai trò kết nối tới MongoDB đó.

Trong trường hợp, các bạn đang sử dụng MongoDB server với authentication mode, thì các bạn cần khai báo username và password đang được gán cho database mà các bạn đang định sẽ sử dụng.

MongoCredential credential = MongoCredential.createCredential
("khanh", "mongodb", "abc123".toCharArray());
List<MongoCredential> auths = new ArrayList<MongoCredential>();
auths.add(credential);

Sau đó thì kết nối tới MongoDB với đoạn code sau:

ServerAddress serverAddress = new ServerAddress("localhost", 27017);
MongoClient client = new MongoClient(serverAddress, auths);

Mặc định, MongoDB sẽ chạy trên port 27017 và nếu các bạn đang cài đặt MongoDB trên máy local thì chúng ta không cần phải khai báo đối tượng MongoClientURI các bạn nhé! Các bạn chỉ cần khai báo đơn giản như sau:

MongoClient client = new MongoClient();

Lúc này, nếu chạy ứng dụng:

package com.huongdanjava.mongodb;

import com.mongodb.MongoClient;

public class Application {

    public static void main(String[] args) {
        MongoClient client = new MongoClient();
    }
}
 
các bạn sẽ thấy kết quả như sau:
MongoDB

Nhìn vào đoạn log, các bạn có thể thấy là ứng dụng của chúng ta đã kết nối được với MongoDB. Sau khi đã kết nối xong, các bạn có thể thao tác với nó.

Đầu tiên, các bạn có thể lấy được danh sách các database đang có trong MongoDB hiện tại sử dụng phương thức listDatabaseNames().

Ví dụ:

package com.huongdanjava.mongodb;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoIterable;

public class Application {

    public static void main(String[] args) {
        MongoClient client = new MongoClient();

        MongoIterable<String> databaseNames = client.listDatabaseNames();
        MongoCursor<String> iterator = databaseNames.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
 
Kết quả:
MongoDB

Chúng ta có thể chọn database để thao tác sử dụng phương thức getDatabase() của đối tượng MongoClient.

Ví dụ, khi có một database tên là mongodb trong MongoDB, thì code sẽ như sau:

MongoDatabase mongodb = client.getDatabase("mongodb");

Giống như khi thao tác sử dụng command line với MongoDB, nếu database mà chúng ta chọn để thao tác không tồn tại thì database này sẽ tự động tạo.

Đối tượng MongoDatabase sẽ là đối tượng nắm giữ mọi thông tin về các Collection có trong database mà chúng ta đang sử dụng. Do đó, từ đối tượng MongoDatabase này, các bạn có thể lấy được tên của tất cả các Collection sử dụng phương thức listCollectionNames().

package com.huongdanjava.mongodb;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;

public class Application {

    public static void main(String[] args) {
        MongoClient client = new MongoClient();

        MongoDatabase mongodb = client.getDatabase("mongodb");

        MongoIterable<String> collectionNames = mongodb.listCollectionNames();
        MongoCursor<String> iterator = collectionNames.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}
 
Database “mongodb” đang có những Collection sau:
MongoDB

thì kết quả sẽ là:

MongoDB

Để thao tác với một Collection nào đó, các bạn có thể sử dụng phương thức getCollection() của đối tượng MongoDatabase để lấy đối tượng MongoCollection cho Collection đó.

Ví dụ:

MongoCollection<Document> student = mongodb.getCollection("student");

Nếu muốn insert một Document vào Collection thì các bạn có thể sử dụng các phương thức insertOne() để insert 1 Document hoặc insertMany() để insert nhiều Document cùng một lúc.

Một Document là một chuỗi JSON và chúng ta sẽ sử dụng đối tượng Document của MongoDB Driver API để build nó. Ví dụ, khi muốn build một Document về thông tin sinh viên gồm tên và tuổi thì chúng ta sẽ tạo đối tượng Document như sau:

package com.huongdanjava.mongodb;

import org.bson.Document;

public class Student extends Document {

    private static final String NAME = "name";
    private static final String AGE = "age";
    public static final String COLLECTION_NAME = "student";

    public String getName() {
        return getString(NAME);
    }

    public void setName(String name) {
        put(NAME, name);
    }

    public Integer getAge() {
        return getInteger(AGE);
    }

    public void setAge(Integer age) {
        put(AGE, age);
    }
}
 
rồi viết code để insert một Document mới:
 
package com.huongdanjava.mongodb;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class Application {

    public static void main(String[] args) {
        MongoClient client = new MongoClient();

        MongoDatabase mongodb = client.getDatabase("mongodb");

        MongoCollection<Document> studentCollection = mongodb.getCollection
                                                 (Student.COLLECTION_NAME);

        Student student = new Student();
        student.setName("Khanh");
        student.setAge(31);

        studentCollection.insertOne(student);
    }
}
 
Kết quả:
MongoDB

Tất nhiên, các bạn cũng có thể kiểm tra kết quả từ code bằng cách sử dụng phương thức find() của đối tượng MongoCollection.

Phương thức find() này có tham số là một đối tượng Document, đây chính là tiêu chí để tìm kiếm tất cả các Document trong Collection hiện tại có nội dung tương tự đó các bạn.

package com.huongdanjava.mongodb;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class Application {

    public static void main(String[] args) {
        MongoClient client = new MongoClient();

        MongoDatabase mongodb = client.getDatabase("mongodb");

        MongoCollection<Document> studentCollection = mongodb.getCollection
                                                 (Student.COLLECTION_NAME);

        Student student = new Student();
        student.setName("Khanh");
        student.setAge(31);

        FindIterable<Document> documents = studentCollection.find(student);
        MongoCursor<Document> iterator = documents.iterator();
        while (iterator.hasNext()) {
            Document next = iterator.next();
            System.out.println(next);
        }
    }
}
 
Trong ví dụ trên, chúng mình tìm kiếm các Student Document theo 2 tiêu chí là name và age. Các bạn có thể mở rộng kết quả tìm kiếm bằng một trong 2 tiêu chí này cũng được.

Kết quả:

MongoDB

Các bạn cũng có thể update một hoặc nhiều Document cùng một lúc. Chúng ta sẽ sử dụng các phương thức updateOne() hoặc updateMany() của đối tượng MongoCollection để làm điều này.

Có nhiều phương thức overload của 2 phương thức trên với các tham số khác nhau. Nhưng cơ bản thì có 2 tham số chính, đó là đối tượng Document để tìm kiếm các Document cần update, đối tượng Document thứ 2 chứa nội dung cần update.

Nguồn: Sưu tầm.

Facebook Comments
Đánh giá bài viết

Bạn thích bài viết này chứ?
Đăng ký để nhận những bài viết thú vị như thế hàng tuần.

Đừng sợ thất bại, chỉ sợ việc dậm chân tại chỗ

TÌM VIỆC
Bình luận