Spring数据Mongodb : Updating documents

标签 spring mongodb

我目前正在尝试弄清楚如何通过 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/

相关文章:

python - 如何将 python 日志输出存储到 mongoDb 中

java - SpringMVC : how to get the value of @RequestMapping in the function

scripting - 为删除 mongodb 表定义 cron

java - spring-boot 和 spring-mvc 兼容性

java - 在 Spring 4 中创建多个 websocket 消息代理实例

javascript - 估算 MongoDB 中的 JS 对象存储大小

node.js - 使用 req 参数解析对象并保存在 mongoose schema 中

mongodb - MongoDB的数据库管理工具

spring - 如何在 Spring 4 STOMP over WebSocket 配置中回复未经身份验证的用户?

java - Spring @Transactional 传播属性