Bộ sưu tập trong mongodb

MongoDB là một cơ sở dữ liệu NoSQL, 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ột dự án Maven mới để làm ví dụ

Bộ sưu tập trong mongodb

Tương tự như các hệ thống cơ sở dữ liệu 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


    org.mongodb
    mongo-java-driver
    3.7.0

Để kết nối tới MongoDB, chúng ta sẽ sử dụng các đối tượng MongoClient từ thư viện Trình điều khiển 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 địa chỉ IP và cổng mà MongoDB đang chạy. Còn lại các đố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 máy chủ MongoDB với chế độ xác thực, các bạn cần khai báo tên người dùng và mật khẩu đang được gán cho cơ sở dữ liệu mà các bạn đang định sử dụng

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

Sau đó, hãy kết nối tới MongoDB với đoạn mã sau

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

Mặc định, MongoDB sẽ chạy trên cổng 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 các đố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();

This time, if run application

package com.huongdanjava.mongodb;

import com.mongodb.MongoClient;

public class Application {

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

 

you will see results as after

Bộ sưu tập trong mongodb

Nhìn vào đoạn nhật ký, các bạn có thể thấy ứng dụng của chúng ta đã được kết nối 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 danh sách các cơ sở dữ liệu đang có trong MongoDB hiện tại bằng cách 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 databaseNames = client.listDatabaseNames();
        MongoCursor iterator = databaseNames.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

 

Kết quả

Bộ sưu tập trong mongodb

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

Ví dụ, khi có một cơ sở dữ liệu tên là mongodb trong MongoDB, thì mã sẽ như sau

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

Giống như khi thao tác sử dụng dòng lệnh với MongoDB, nếu cơ sở dữ liệu mà chúng ta chọn để thao tác không tồn tại thì cơ sở dữ liệu 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 Bộ sưu tập có trong cơ sở dữ liệu mà chúng ta đang sử dụng. Do đó, từ đối tượng MongoDatabase này, các bạn có thể lấy tên của tất cả các Bộ sưu tập bằng cách sử dụng phương thức listCollectionNames()

________số 8_______

 

Cơ sở dữ liệu “mongodb” đang có những Bộ sưu tập sau

Bộ sưu tập trong mongodb

then results will be

Bộ sưu tập trong mongodb

Để thao tác với bất kỳ Bộ sưu tập 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 Bộ sưu tập đó

Ví dụ

MongoCollection student = mongodb.getCollection("student");

Nếu muốn chèn một Tài liệu vào Bộ sưu tập, các bạn có thể sử dụng các phương thức insertOne() để chèn 1 Tài liệu hoặc insertMany() để chèn nhiều Tài liệu cùng một lúc

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

MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
MongoClient client = new MongoClient(uri);
0

 

rồi viết mã để chèn một Tài liệu mới

 

MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
MongoClient client = new MongoClient(uri);
1

 

Kết quả

Bộ sưu tập trong mongodb

Tất nhiên, các bạn cũng có thể kiểm tra kết quả từ mã 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 Tài liệu, đây chính là tiêu chí để tìm kiếm tất cả các Tài liệu trong Bộ sưu tập hiện có nội dung tương tự đó các bạn

MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
MongoClient client = new MongoClient(uri);
2

 

Trong ví dụ trên, chúng tôi tìm kiếm các Tài liệu Sinh viên theo 2 tiêu chí là tên và tuổi. 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ả

Bộ sưu tập trong mongodb

Các bạn cũng có thể cập nhật một hoặc nhiều Tài liệu 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 để thực hiện điều này

Có nhiều quá tải phương thức 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 Tài liệu để tìm kiếm các Tài liệu cần cập nhật, đối tượng Tài liệu thứ 2 chứa nội dung cần cập nhật