使用spring更新mongo Db中的数据(MongoTemplate)

时间:2016-01-22 14:44:39

标签: spring mongodb

我有一个集合(A),在mongoDB中有两个字段(字符串,整数)。我想通过向sting添加一些值来更新集合

实施例。假设我有一份文件A [field1:ABC,field2:25]。我想通过添加5来更新它,以便在更新后看起来像A [field1:ABC,field2:30]。

我用于此的代码如下:

Query query = new Query();
query.addCriteria(Criteria.where("field1").is("ABC));
BeanName beanName = template.findOne(query, BeanName.class,collectionName);
if(null != beanName){
    Update update = new Update();
    update.set("field1", "ABC");
    update.set("field2", beanName.getField2() + 5)
    template.updateFirst(query, update, BeanName.class,collectionName);
}
else{
    template.save(beanName, collectionName); // the value of filed1 and field 2 is populated in a bean with instance 'beanName'
}

代码令人印象深刻,预期效果很好,但性能非常慢。还有其他有效的方法。

我正在处理大量数据要更新。

1 个答案:

答案 0 :(得分:0)

我建议你使用findAndModify()方法,结合upsert = true功能。请查看以下官方文档:

https://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/