MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Składnia Java z MongoDB

Chociaż z pewnością możesz skorzystać z sugerowanego formularza:

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

wprowadza problem, gdy ciało pętli for zgłasza wyjątek:jeśli tak się stanie, kursor nie zostanie zamknięty. Właściwym idiomem, przed którym należy się strzec, jest jawne użycie MongoCursor (który implementuje Closeable):

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

Metoda forEach to tylko trochę syntaktycznego cukierka, aby uniknąć konieczności martwienia się kodem aplikacji o ręczne zamykanie kursora w ten sposób.

Jeśli nie chcesz tworzyć nowego bloku dla każdej iteracji, możesz zrefaktoryzować swój kod, wyciągając anonimowe tworzenie klasy wewnętrznej, np.:

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

Oczywiście jest to jeszcze bardziej niezgrabne, więc jeśli potrafisz używać Javy 8, możesz zastąpić całość lambdą:

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

lub w tym przypadku po prostu:

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

Metafabryka lambda zapewni, że nie zostaną utworzone żadne niepotrzebne obiekty.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zarządzać użytkownikami i uwierzytelnianiem w MongoDB

  2. Transakcje Spring Data MongoDB

  3. Czy księgowanie MongoDB gwarantuje trwałość?

  4. Jak używać mongoimport do importowania csv

  5. Jaki jest prawidłowy sposób indeksowania w MongoDB, gdy istnieje duża kombinacja pól