![](/img/trans.png)
[英]Spring boot - How can I aggrupate and sort in Spring and Mongo?
[英]How can I sort and do a search in mongodb spring boot
我無法使用 Mongodb 對搜索結果進行排序,我添加了一個使用 findAllByorderByDateDesc() 的方法查詢
我嘗試使用“findAllByOrderByDateDesc(),如果我沒有進行搜索查詢,它會起作用,但是一旦我添加了@Query 注釋,它就會停止按日期排序。
資料庫
@Repository
public interface WarrantiesRepository extends MongoRepository<WarrantyModel, String> {
public Page<WarrantyModel> findAllByOrderByDateDesc(PageRequest pageRequest);
@Query("{$text: {$search: ?0}}")
public Page<WarrantyModel> findAllByOrderByDateDesc(String search, PageRequest pageRequest);
public WarrantyModel getWarrantyById(String id);
public WarrantyModel getWarrantyByCar(String car);
public WarrantyModel getWarrantyByPart(String part);
public WarrantyModel getWarrantyBypartNumber(String partNumber);
}
控制器
@PostMapping("/warranties/search")
public ModelAndView getLiveWarranties(@RequestBody String search, Model model) {
input = search.substring(1, search.length()-1);
if(search.length() == 2) {
warranties = warrantiesRepository.findAllByOrderByDateDesc(PageRequest.of(currentPage, pageSize));
} else {
warranties = warrantiesRepository.findAllByOrderByDateDesc(search, PageRequest.of(currentPage, pageSize));
}
ModelAndView mv = new ModelAndView("warranties::search");
mv.addObject("warranties", warranties);
return mv;
}
模型
@Component
@Document("Warranty")
public class WarrantyModel {
@Id
public String id;
@TextIndexed
public String car;
@TextIndexed
public String part;
public String store;
@TextIndexed
public String partNumber;
public String warranty;
public LocalDate date;
Constructors/getter/setters
這是預期的行為。 默認情況下,“...Repository”的所有方法都是“派生查詢方法”,Spring 會嘗試根據方法名稱映射實現(它將為您生成查詢)。
一旦你用@Query
注釋注釋了一個方法,Spring 希望你指定你自己的查詢,並且無論方法的名稱如何,它都不會自己做任何派生。
查看這篇文章以獲得更詳細的解釋 - Spring Data MongoDB - Guide to the @Query Annotation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.