1. Tổng quan
MongoDB là cơ sở dữ liệu NoSQL lưu trữ các bản ghi dữ liệu dưới dạng BSON tài liệu thành một bộ sưu tập. Chúng ta có thể có nhiều cơ sở dữ liệu và mỗi cơ sở dữ liệu có thể có một hoặc nhiều bộ sưu tập tài liệu.
Không giống như cơ sở dữ liệu quan hệ, MongoDB tạo bộ sưu tập với tài liệu được chèn mà không cần bất kỳ định nghĩa cấu trúc nào. Trong hướng dẫn này, chúng ta sẽ tìm hiểu nhiều cách khác nhau để kiểm tra sự tồn tại của một bộ sưu tập. Chúng tôi sẽ sử dụng collectionExists, createCollection, listCollectionNames, và tính phương pháp để kiểm tra sự tồn tại của bộ sưu tập.
2. Kết nối cơ sở dữ liệu
Để truy cập bất kỳ dữ liệu nào của bộ sưu tập, trước tiên chúng ta cần thiết lập kết nối với cơ sở dữ liệu. Hãy kết nối với cơ sở dữ liệu MongoDB đang chạy cục bộ trên máy của chúng tôi.
2.1. Tạo kết nối bằng MongoClient
MongoClient là một lớp Java được sử dụng để thiết lập kết nối với cá thể MongoDB:
MongoClient mongoClient = new MongoClient("localhost", 27017);
Ở đây, chúng tôi đang kết nối với MongoDB đang chạy ở cổng mặc định cổng 27017 trên localhost.
2.2. Kết nối với Cơ sở dữ liệu
Bây giờ, hãy sử dụng MongoClient đối tượng để truy cập cơ sở dữ liệu. Có hai phương pháp để truy cập cơ sở dữ liệu bằng cách sử dụng MongoClient .
Đầu tiên, chúng tôi sẽ sử dụng getDatabase phương pháp để truy cập baeldung cơ sở dữ liệu:
MongoDatabase database = mongoClient.getDatabase("baeldung");
Chúng tôi cũng có thể sử dụng getDB phương thức của trình điều khiển Java Mongo để kết nối với cơ sở dữ liệu:
DB db = mongoClient.getDB("baeldung");
getDB phương pháp không được dùng nữa, do đó nó không được khuyến khích sử dụng.
Cho đến nay, chúng tôi đã thiết lập kết nối với MongoDB bằng MongoClient và được kết nối thêm với baeldung cơ sở dữ liệu.
Hãy đi sâu vào các phương pháp tiếp cận khác nhau để kiểm tra sự tồn tại của một bộ sưu tập trong MongoDB.
3. Sử dụng DB Lớp học
Trình điều khiển Java MongoDB cung cấp cả lời gọi phương thức đồng bộ và không đồng bộ. Để kết nối với cơ sở dữ liệu, chúng ta chỉ cần chỉ định tên cơ sở dữ liệu. Nếu cơ sở dữ liệu không có, MongoDB sẽ tự động tạo một cơ sở dữ liệu.
The collectionExists phương pháp có thể được sử dụng để kiểm tra xem một bộ sưu tập có hiện diện hay không:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));
Đây, collectionExists phương thức sẽ trả về true nếu bộ sưu tập tồn tại, ngược lại là false.
com.mongodb.DB API của trình điều khiển Java MongoDB không được dùng nữa từ phiên bản 3.x, nhưng vẫn có thể truy cập được. Do đó, DB lớp không được khuyến khích sử dụng cho một dự án mới.
4. Sử dụng MongoDatabase Lớp học
com.mongodb.client.MongoDatabase là một API được cập nhật cho Mongo 3.x trở lên. Không giống như lớp DB, lớp MongoDatabase không cung cấp bất kỳ phương thức cụ thể nào để kiểm tra sự tồn tại của một tập hợp. Tuy nhiên, có nhiều phương pháp khác nhau mà chúng ta có thể sử dụng để có được kết quả mong muốn.
4.1. Sử dụng createCollection Phương pháp
createCollection phương thức tạo một bộ sưu tập mới trong MongoDB. Nhưng chúng tôi cũng có thể sử dụng nó để kiểm tra xem một bộ sưu tập có tồn tại hay không:
String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
try {
database.createCollection(testCollectionName);
} catch (Exception exception) {
System.err.println("Collection:- "+testCollectionName +" already Exists");
}
Đoạn mã trên sẽ tạo một bộ sưu tập mới “ sinh viên” nếu nó chưa có trong cơ sở dữ liệu. createCollection phương thức sẽ đưa ra một ngoại lệ trong trường hợp bộ sưu tập đã tồn tại.
Cách tiếp cận này không được khuyến nghị vì nó tạo ra một bộ sưu tập mới trong cơ sở dữ liệu.
4.2. Sử dụng listCollectionNames Phương pháp
listCollectionNames phương thức liệt kê tất cả các tên bộ sưu tập trong cơ sở dữ liệu. Do đó, chúng ta có thể sử dụng phương pháp này để giải quyết vấn đề tồn tại bộ sưu tập.
Bây giờ chúng ta hãy xem mã ví dụ của listCollectionNames phương pháp sử dụng mã trình điều khiển Java:
String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
boolean collectionExists = database.listCollectionNames()
.into(new ArrayList()).contains(testCollectionName);
System.out.println("collectionExists:- " + collectionExists);
Tại đây, chúng tôi đã lặp lại danh sách tất cả các tên bộ sưu tập trong cơ sở dữ liệu baeldung. Đối với mỗi lần xuất hiện, chúng tôi đối sánh tên chuỗi bộ sưu tập với testCollectionName . Nó sẽ trả về true về một trận đấu thành công, false ngược lại.
4.3. Sử dụng số lượng Phương pháp
Số lượng phương pháp của MongoCollection đếm số lượng tài liệu có trong một bộ sưu tập.
Để giải quyết vấn đề, chúng tôi có thể sử dụng phương pháp này để kiểm tra sự tồn tại của bộ sưu tập. Đây là đoạn mã Java cho cùng một:
String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
MongoCollection<Document> collection = database.getCollection(testCollectionName);
Boolean collectionExists = collection.count() > 0 ? true : false;
System.out.println("collectionExists:- " + collectionExists);
Boolean expectedStatus = false;
assertEquals(expectedStatus, collectionExists);
Phương pháp này không hoạt động nếu tập hợp tồn tại mà không có bất kỳ dữ liệu nào, Trong trường hợp đó, nó sẽ trả về 0, nhưng tập hợp tồn tại với dữ liệu trống.