2016-10-14 6 views
0

私はMongoTemplateを使用して、のクエリを使用して複数のドキュメントを更新し、更新されたドキュメント数を返すメソッドを実装しています。MongoTemplate findAndModify更新されたドキュメント数を取得

私がMySQLを使用していた時、updateメソッドは通常、更新されたデータ数をデフォルト値として返します。だから、mongoで同じことをどうやって得ることができるのだろうか?

また、findAndModifyを使用すると、関数をマルチスレッドセーフにしたいからです。

助けてください...

答えて

0

findAndModifyではなくMongoTemplateに一つだけの文書を更新し、我々は、複数のドキュメントを更新し、多くの文書が更新されたかを伝えることができますwriteResultを返すupdateMultiを持って

/** 
* finds the elements based on query and modifies it 
* 
* @param query 
* @param update 
* @param clazz 
* @return 
* @throws MeowException 
*/ 
protected <T> WriteResult modifyAll(final Query query, final Update update, final Class<T> clazz) throws MeowException{ 
    try{ 
     return getMongoTemplate().updateMulti(query, update, clazz); 
    }catch(Exception ex){ 
     throw new MeowException(ex).withParam("query", query).withParam("update", update).withParam("class", clazz).logToFile("Exception in modifyAll"); 
    } 
} 

これはできます

WriteResult result = modifyAll(query, update, Kitten.class); 
logger.error("document updated count :"+result.getN()); 

と呼ばれることがあります。

+0

だけではなく、実際にすべてのレコードのリスト、またはすべての更新されたレコードのフィールドを取得する必要がありますか? –

関連する問題