Làm cách nào để xem một bộ sưu tập cụ thể trong mongodb?

MongoDB là cơ sở dữ liệu NoSQL lưu trữ các bản ghi dữ liệu dưới dạng tài liệu BSON vào 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 phương thức collectionExists, createCollection, listCollectionNames và count để 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 một 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à lớp Java dùng để thiết lập kết nối với phiên bản 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 đối tượng MongoClient để truy cập cơ sở dữ liệu. Có hai phương pháp để truy cập cơ sở dữ liệu bằng MongoClient

Đầu tiên, chúng ta sẽ sử dụng phương thức getDatabase để truy cập cơ sở dữ liệu baeldung

MongoDatabase database = mongoClient.getDatabase("baeldung");

Chúng ta cũng có thể sử dụng phương thức getDB của trình điều khiển Mongo Java để kết nối với cơ sở dữ liệu

DB db = mongoClient.getDB("baeldung");

Phương thức getDB không được dùng nữa, do đó không nên 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à kết nối thêm với cơ sở dữ liệu baeldung

Hãy đi sâu vào các cách 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 lớp DB

Trình điều khiển Java MongoDB cung cấp cả lệnh 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 không có cơ sở dữ liệu, MongoDB sẽ tự động tạo một

Phương thức collectionExists có thể được sử dụng để kiểm tra xem một bộ sưu tập có tồn tại 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, phương thức collectionExists sẽ trả về true nếu bộ sưu tập tồn tại, ngược lại là false

com. mongodb. API DB 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 nó vẫn có thể truy cập được. Do đó, lớp DB không được khuyến nghị sử dụng cho một dự án mới

4. Sử dụng lớp MongoDatabase

com. mongodb. khách hàng. MongoDatabase là API 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 bộ sưu tậ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 phương thức createCollection

Phương thức createCollection tạo một bộ sưu tập mới trong MongoDB. Nhưng chúng ta cũng có thể sử dụng nó để kiểm tra xem một tập hợ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. Phương thức createCollection 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 Phương thức listCollectionNames

Phương thức listCollectionNames 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 đề về sự tồn tại của tập hợp

Bây giờ hãy xem mã ví dụ của phương thức listCollectionNames bằ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);

Ở đâ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 khớp tên chuỗi bộ sưu tập với testCollectionName. Nó sẽ trả về true khi khớp thành công, ngược lại là false

4. 3. Sử dụng Phương pháp đếm

Phương thức đếm của MongoCollection đếm số lượng tài liệu có trong một bộ sưu tập

Như một giải pháp thay thế, chúng ta 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

String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
MongoCollection 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 một bộ sưu tậ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 bộ sưu tập tồn tại với dữ liệu trống

5. Sự kết luận

Trong bài viết này, chúng ta đã khám phá nhiều cách khác nhau để kiểm tra sự tồn tại của một bộ sưu tập bằng cách sử dụng các phương thức lớp MongoDatabase và DB

Tóm lại, phương thức collectionExists của com. mongodb. Lớp DB và phương thức listCollectionNames của com. mongodb. khách hàng. MongoDatabase được khuyến nghị để kiểm tra sự tồn tại của bộ sưu tập