MongoTemplate findAndModify获取更新的文档计数

时间:2016-10-14 07:55:28

标签: java mongodb

我使用MongoTemplate实现一种方法,该方法可以根据查询更新多个文档,并返回更新的文档计数

当我使用MySQL时,更新方法通常会将更新的数据计数作为默认值返回,因此我想知道如何在mongo中获得相同的内容?

另外,使用 findAndModify ,因为我希望该函数是多线程安全的。

请帮忙......

1 个答案:

答案 0 :(得分:0)

findAndModify仅在MongoTemplate中更新一个文档,我们有updateMulti更新多个文档并返回一个writeResult,它可以告诉你有多少文档被更新

/**
 * 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());

希望它有所帮助。