我目前正在尝试弄清楚如何通过 Spring Data 更新 MongoDb 中的文档。当然还有mongoTemplate.updateFirst等等。但请考虑一下:
User u = mongoTemplate.findOne(new Query(Criteria.where("_id").is(s)), User.class);
if (u == null) throw new UsernameNotFoundException("user " + s + " does not exist");
Session.setCurrentUser(u);
mongoTemplate.updateFirst(new Query(Criteria.where("_id").is(s)), new Update().inc("logincount", 1), User.class);
...查询用户,在 null 时抛出异常,如果发现则将登录计数增加 1。工作完美。但这是正确的方法吗?我是否需要再次查询该用户?我不能修改对象并重新保存它吗?
最佳答案
您可以通过执行以下操作来避免额外的查询:
WriteResult result = mongoTemplate.updateFirst(new Query(Criteria.where("_id").is(s)), new Update().inc("logincount", 1), User.class);
if (result.getN() != 1) {
throw new UsernameNotFoundException("user " + s + " does not exist");
}
关于Spring数据Mongodb : Updating documents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10524160/