MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Sintaks Java dengan MongoDB

Meskipun Anda pasti dapat menggunakan formulir yang Anda sarankan:

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

itu menimbulkan masalah ketika badan for loop melempar pengecualian:jika ini terjadi, kursor tidak akan ditutup. Ungkapan yang tepat untuk mencegahnya adalah dengan menggunakan MongoCursor (yang mengimplementasikan Closeable) secara eksplisit:

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

Metode forEach hanya sedikit gula sintaksis untuk menghindari perlunya kode aplikasi khawatir harus menutup kursor secara manual seperti ini.

Jika Anda tidak ingin membuat Blok baru untuk setiap iterasi, Anda dapat memfaktorkan ulang kode Anda dengan mengeluarkan pembuatan kelas dalam anonim, mis.:

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

Tentu saja itu lebih rumit, jadi jika Anda bisa menggunakan Java 8, Anda bisa mengganti semuanya dengan lambda:

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

atau dalam hal ini cukup:

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

Metafactory lambda akan memastikan bahwa tidak ada objek yang tidak perlu dibuat.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cocokkan dengan substring dalam agregasi mongodb

  2. mongodb ditemukan oleh beberapa item array

  3. MongoDB di Ubuntu tidak akan dimulai sebagai layanan, tidak ada di log

  4. Mengapa disarankan untuk tidak menutup koneksi MongoDB di mana pun dalam kode Node.js?

  5. Cara Memeriksa Apakah Indeks Tersembunyi di MongoDB