MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cú pháp Java với MongoDB

Mặc dù bạn chắc chắn có thể sử dụng biểu mẫu mà bạn đã đề xuất:

for (Document document : col.find()) {
    // do something
}

nó đưa ra một vấn đề khi phần thân của vòng lặp for ném ra một ngoại lệ:nếu điều này xảy ra, con trỏ sẽ không bị đóng. Thành ngữ thích hợp để đề phòng điều đó là sử dụng MongoCursor (triển khai Closable) một cách rõ ràng:

try (MongoCursor<Document> cursor = col.find().iterator()) {
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
}

Phương thức forEach chỉ là một chút cú pháp để tránh việc mã ứng dụng phải lo lắng về việc phải đóng con trỏ theo cách thủ công như thế này.

Nếu bạn không muốn tạo một Khối mới cho mỗi lần lặp, bạn có thể cấu trúc lại mã của mình để kéo ra tạo lớp bên trong ẩn danh, ví dụ:

Block<Document> block = new Block<Document>() {
    @Override
    public void apply(final Document document) {
        System.out.println(document);
    }
};
col.find().forEach(block);

Tất nhiên điều đó thậm chí còn phức tạp hơn, vì vậy nếu bạn có thể sử dụng Java 8, bạn có thể thay thế toàn bộ bằng lambda:

col.find().forEach((Block<Document>) document -> {
    System.out.println(document);
});

hoặc trong trường hợp này chỉ đơn giản là:

col.find().forEach((Block<Document>) System.out::println);

Lambda metafactory sẽ đảm bảo rằng không có đối tượng không cần thiết nào được tạo ra.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ chia

  2. Cài đặt MongoDB Community Edition 4.0 trên Linux

  3. Cân nhắc khi quản lý MongoDB

  4. 2 cách để giới hạn tài liệu được trả lại trong MongoDB

  5. Meteor, xác định động bộ sưu tập