2015-11-23 1 views
6

私はMongoDbに文書を保存し、クラス、コレクション名paramでsaveメソッドを使用しています。save()メソッドの後にドキュメントがMongodbに保存されたかどうかを知るにはどうすればよいですか?

保存と挿入のすべてのメソッドはvoid戻り型です。私の文書が保存されたかどうかを知ることができます。

私のドキュメントが保存されたかどうかを確認するために再クエリする必要がありますか?それが保存されているかどうかを確認するには、戻り値が必要です。

また、私はMongoのSpring Dataを使って操作を行っています。

答えて

3

あなたが使用しているものはWriteConcernに依存します。 WriteConcern.ACKNOWLEDGEDを使用する場合、 操作はプライマリサーバーからの確認応答を待機するため、例外が発生しなければレコードは正しく保存されています。そうしないとあなたがWriteResult

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

WriteConcern.SAFEが廃止され、あなたは今WriteConcern.ACKNOWLEDGEDを使用する必要があります。 http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#SAFE ます。http://api.mongodbを。 org/java/current/com/mongodb/WriteConcern.html#ACKNOWLEDGEDになりました。 – DrunkenPope

+1

ありがとう、これを反映するために私の答えを更新しました。 – Jaco

2

org.springframework.data.mongodb.repository.MongoRepository

を照会することができるはず保存されたオブジェクトのリストを返します。

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

または

CrudRepository 

あなたは

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

保存オブジェクトを提供します。そのオブジェクトは、あなたが@Idで注釈を付けたフィールドを、それが永続化された後にnullとは異なる値で埋められます。

関連する問題