簡體   English   中英

我如何在 mongodb spring boot 中進行排序和搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM