我有一个集合(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'
}
代码令人印象深刻,预期效果很好,但性能非常慢。还有其他有效的方法。
我正在处理大量数据要更新。
答案 0 :(得分:0)
我建议你使用findAndModify()方法,结合upsert = true功能。请查看以下官方文档:
https://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/