Spring MongoDB查询排序

İlk*_*kut 32 java sorting spring mongodb

我在mongodb上相当新,而我正在尝试进行有序的mongodb查询.但是不推荐使用spring数据mongodb的sort方法.所以我用了org.springframework.data.domain.Sort

Query query = new Query();
query.with(new Sort(Sort.Direction.ASC,"pdate"));
return mongoTemplate.find(query, Product.class);
Run Code Online (Sandbox Code Playgroud)

我用过这个代码块.但它没有对数据进行排序.那么您是否可以选择使用任何有用的方法进行此练习?

dev*_*dev 33

您可以通过这种方式定义排序以忽略大小写:

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase()
Run Code Online (Sandbox Code Playgroud)

  • 它不适用于我,使用最新的MongoDb,很奇怪......我有Mongo的异常和类似的代码... java.lang.IllegalArgumentException:给定排序包含用户名的订单,忽略大小写!MongoDB目前不支持排序忽略大小写! (2认同)
  • 现在不推荐使用。使用Sort.by(Sort.Direction.ASC,FIELD_NAME)) (2认同)

Ron*_*ley 14

新答案- Spring Data Moore

Sort.by

Query().addCriteria(Criteria.where("field").`is`(value)).with(Sort.by(Sort.Direction.DESC, "sortField"))
Run Code Online (Sandbox Code Playgroud)


imb*_*ond 9

s在存储库中编写了自定义查询后,便可以在调用期间执行排序。喜欢,

资料库

@Query("{ 'id' : ?0}")
List<Student> findStudent(String id, Sort sort);
Run Code Online (Sandbox Code Playgroud)

调用期间

Sort sort = new Sort(Sort.Direction.ASC, "date")
List<Student> students = studentRepo.findStudent(1, sort);  
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!:)


Gen*_*ene 7

这是按降序对字段值进行排序的方法。我的字段值是“nominationTimestamp”,但对于您来说它可能是“firstName”。

List<Movie> result = myMovieRepository.findAll(Sort.by(Sort.Direction.DESC, "nominationTimestamp")); 
Run Code Online (Sandbox Code Playgroud)

myMovieRepository 是扩展 MongoRepository<> 的任何类的实例。


小智 6

query.with(new Sort(Sort.Direction.ASC, "timestamp"));
Run Code Online (Sandbox Code Playgroud)

记住 sort 参数作为字段,1 或 -1 分别指定升序或降序排序。