2015-11-23 16 views
6

Zapisuję dokument w MongoDb i zapisuję metodę z klasą, nazwa kolekcji.jak byśmy wiedzieli, czy dokument został zapisany w Mongodb po metodzie save()?

Wszystkie metody składowania i wstawiania są nieważnymi typami zwracanymi. to jak mogę wiedzieć, że mój dokument został zapisany, czy nie.

Czy muszę ponownie przesłać zapytanie, aby sprawdzić, czy mój dokument został zapisany. Potrzebuję tylko wartości zwracanej, aby sprawdzić, czy została zapisana.

Ponadto używam Spring Data for Mongo do wykonywania operacji.

Odpowiedz

3

To zależy od tego, z jakiego używasz WriteConcern. Jeśli użyjesz WriteConcern.ACKNOWLEDGED, , operacja będzie czekać na potwierdzenie z serwera głównego, więc jeśli nie zostanie zgłoszony żaden wyjątek, rekord zostanie zapisany poprawnie. W przeciwnym razie powinien być w stanie kwerendy WriteResult

WriteResult writeResult=mycollection.insert(record); 
if (writeResult.getError() != null) { 
    throw new Exception(String.format("Insertion wasn't successful: %s",writeResult)); 
} 
+3

WriteConcern.SAFE jest przestarzała i należy użyć teraz WriteConcern.ACKNOWLEDGED: http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#SAFE http: //api.mongodb. org/java/current/com/mongodb/WriteConcern.html # ACKNOWLEDGED now. – DrunkenPope

+1

Dzięki, zaktualizowałem moją odpowiedź, aby to odzwierciedlić. – Jaco

2

org.springframework.data.mongodb.repository.MongoRepository

zwraca listę zapisanych obiektów:

<S extends T> List<S> save(Iterable<S> entites); 

lub w

CrudRepository 

masz

<S extends T> S save(S entity); 

, która dostarcza zapisany obiekt. Ten obiekt będzie miał dowolne pole, które zostało oznaczone adnotacją @Id z wartością wypełnioną inną niż null, po tym, jak z powodzeniem została zachowana.