Hướng dẫn mongodb java - mongodb java

Hướng dẫn tự học MongoDB qua ví dụ (Mongo database)

Hướng dẫn mongodb java - mongodb java

  1. MongoDB là gì? Các khái niệm trong MongoDB
  2. Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
  3. Hướng dẫn cài đặt, cấu hình MongoDB trên Windows
  4. Hướng dẫn cài đặt MongoDB trên Linux – Ubuntu
  5. Cài đặt và sử dụng Robo 3T (RoboMongo) trên Windows
  6. Tạo database trong MongoDB
  7. Xóa, DROP database trong MongoDB
  8. Tạo bảng, collections trong MongoDB
  9. Xóa bảng, collections trong MongoDB
  10. Insert document, bản ghi trong MongoDB
  11. Truy vấn dữ liệu, document – find(), Select, Where trong MongoDB
  12. Xóa document, row trong MongoDB
  13. Update document, dữ liệu trong MongoDB
  14. Projection trong MongoDB (chọn field được hiển thị trong kết quả tìm kiếm)
  15. Phân trang trong MongoDB (skip(), limit() paging trong MongoDB)
  16. Sắp xếp trong MongoDB(sorting() trong MongoDB)
  17. Xóa cột, field, trường của collections trong MongoDB ($unset).
  18. Đổi tên field trong MongoDB với $rename

Nâng Cao

  1. System Collections là gì? Các System Collections trong MongoDB
  2. Các loại roles, vai trò, quyền trong MongoDB
  3. Bật, tắt chức năng đăng nhập MongoDB với username, password.
  4. Đăng nhập mongodb với username và password (database mongo)
  5. Tạo user/roles, phân quyền người dùng trên MongoDB
  6. MongoDB Remote Access – truy cập từ xa với MongoDB
  7. Replication trong MongoDB, Replica Set là gì?
  8. Cài đặt Replica Set, thêm mới node vào Replica Set
  9. Sao lưu và khôi phục database mongodb (mongodump/mongorestore)

Code ví dụ Java với MongoDB

  • Code ví dụ Java kết nối MongoDB, xóa database trong MongoDB
  • Code ví dụ Java MongoDB – Tạo database, collections, insert document.
  • Code ví dụ Java MongoDB – Search, Select, Find document
  • Code ví dụ Java Mongo – Update documents, update row
  • Code ví dụ Java MongoDB – Delete Document, Xóa document
  • Code ví dụ Spring Boot – Spring Data MongoDB với MongoRepository
  • Code ví dụ Spring Boot – Spring Data MongoDB hiển thị dữ liệu với Thymeleaf.

Code ví dụ Spring Boot với MongoDB

Khác

  1. Đánh chỉ mục là gì? Đánh chỉ mục trong MongoDB
 

References: https://docs.mongodb.com/manual/installation/ https://docs.mongodb.com/manual/mongo/  

Database “mongodb” của mình đang có những Collection sau:

Có những Collection sau

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

Hướng dẫn mongodb java - mongodb java

Hướng dẫn mongodb java - mongodb java
Để 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ụ của mình như sau:


    org.mongodb
    mongo-java-driver
    3.7.0

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ụ, giờ mình muốn build một Document về thông tin sinh viên gồm tên và tuổi thì mình sẽ tạo đối tượng Document như sau:, 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);

rồi viết code để insert một Document mới:

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.

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

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.

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

Trong ví dụ trên, 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.

Các bạn cũng có thể update một hoặc nhiều Document cùng một lúc cũng được.

MongoClient client = new MongoClient();

Mình đang sử dụng MongoDB trên máy mình nên mình chỉ cần khai báo như trên mà thôi!

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:

Hướng dẫn mongodb java - mongodb java
Kết quả hiển thị

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 rồi đó các bạn!

Sau khi đã kết nối tới MongoDB xong, giờ thì 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 của mình 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ả:

Hướng dẫn mongodb java - mongodb java
Kết quả

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ụ, mình đang có một database tên là mongodb trong MongoDB, thì code của mình 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 nha các bạn.

Đố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 collectionNames = mongodb.listCollectionNames();
        MongoCursor iterator = collectionNames.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

Database “mongodb” của mình đang có những Collection sau:

Hướng dẫn mongodb java - mongodb java
Có những Collection sau

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

Hướng dẫn mongodb java - mongodb java
Kết quả

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ụ, mình đang có một database tên là mongodb trong MongoDB, thì code của mình sẽ như sau:

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

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 nha các bạn.

Đố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().

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

Database “mongodb” của mình đang có những Collection sau:

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

Kết quả:

Hướng dẫn mongodb java - mongodb java
Kết quả

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ụ, mình đang có một database tên là mongodb trong MongoDB, thì code của mình sẽ như sau:

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

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 nha các bạn.

Kết quả:

Hướng dẫn mongodb java - mongodb java
Kết quả

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ụ, mình đang có một database tên là mongodb trong MongoDB, thì code của mình sẽ như sau:

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 nha các bạn.

Đố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().

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

Database “mongodb” của mình đang có những Collection sau:

Kết quả:

Hướng dẫn mongodb java - mongodb java
Kết quả

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ụ:

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

Kết quả:

Hướng dẫn mongodb java - mongodb java
Kết quả

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ụ, mình đang có một database tên là mongodb trong MongoDB, thì code của mình sẽ như sau:
  • 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 nha các bạn.
  • Đố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().