我想使用 Spring Data 和 MongoDB 获取User
实体中字段code
的最大值。
我见过类似的例子,如下所示,
".find({}).sort({"updateTime" : -1}).limit(1)"
但是不知道如何使用@Query
注释将其集成到我自己的repository
中。
任何替代解决方案,而不是返回所述字段的最大值也是受欢迎的。 谢谢。
您可以为存储库编写自定义方法。 例如,您有:
public interface UserRepository extends MongoRepository<User, String>, UserRepositoryCustom {
...
}
存储库的其他方法:
public interface UserRepositoryCustom {
User maxUser();
}
然后实现它:
public class UserRepositoryImpl implements UserRepositoryCustom {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public User maxUser() {
final Query query = new Query()
.limit(1)
.with(new Sort(Sort.Direction.DESC, "updateTime"));
return mongoTemplate.findOne(query, User.class)
}
}
您可以使用 spring 数据方法语法,如下所示:public User findTopByOrderByUpdateTimeAsc()
可以在此处找到参考:https://www.baeldung.com/jpa-limit-query-results#1first-ortop
在 spring 使用此代码从 mongodb 获取最新更新时间:(mongoTemplate(
public List getTopPosts() {
Query query = new Query();
query.with(Sort.by(Sort.Direction.DESC, "postUploadedTime"));
return mongoTemplate.find(query,Post.class);
}