Java 使用spring boot在mongodb中按标题查找元素

Java 使用spring boot在mongodb中按标题查找元素,java,spring,mongodb,spring-boot,Java,Spring,Mongodb,Spring Boot,这是我第一次使用Spring Boot,我是一个完全的初学者。我想查询mongodb以检查项目是否与输入对象的标题相同。按照我设置代码的方式,在查看其他解决方案时,我找不到一种简单的方法来执行此操作 我的代码: BookRepository.java(初始化MONGODB REPO) java(RESTAPI) 向存储库添加existsbytle方法,如下所示。不需要实施 import org.springframework.data.mongodb.repository.MongoReposi

这是我第一次使用Spring Boot,我是一个完全的初学者。我想查询mongodb以检查项目是否与输入对象的标题相同。按照我设置代码的方式,在查看其他解决方案时,我找不到一种简单的方法来执行此操作

我的代码:

BookRepository.java(初始化MONGODB REPO)

java(RESTAPI)


向存储库添加existsbytle方法,如下所示。不需要实施

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends MongoRepository<Book,String>{
   boolean existsByTitle(String title);
}
我还建议您简化getter的输出,因为它们应该只返回值,而不返回其他内容。如果您需要添加“标题是:”您可以稍后在其他地方添加:

public String getTitle() {
        return title;
}
    
public String getCreator() {
    return creator;
}
youtube和其他资源上有大量教程,您可以查看这些教程以更好地掌握如何使用mongodb进行spring引导。首先看看其中的一个,我保证你能很容易地做这样的事情

编辑:还有一件事。通常,您不会直接连接控制器和存储库,如果您查看教程,您很可能会看到此人使用中间“服务”层。 在您的情况下,您需要BookController->BookService->BookRepository

有了这个,你可以避免在你的控制器中有大量的逻辑,这些逻辑应该尽可能干净

理想情况下,BookController类如下所示:

@RestController
public class BookController {
  
    @Autowired
    public BookService bookService;
    
    @PostMapping(value= "/createBook") 
    public String createBook( @RequestBody Book book){
        return bookService.createBook(book);   
    }
    
    //OTHER CONTROLLER METHODS
}
所有复杂的逻辑,如检查书名是否存在以及其他内容,现在都可以转到bookService.createBook()。别忘了也用@Service注释BookService

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends MongoRepository<Book,String>{
   boolean existsByTitle(String title);
}
@PostMapping(value= "/createBook") 
    public String createBook( @RequestBody Book book){
          
        //what to do now to check if title exists in a document ? 
        boolean titleExists = bookRepo.existsByTitle(book.getTitle());
         
        //do something with this information....  
    }
public String getTitle() {
        return title;
}
    
public String getCreator() {
    return creator;
}
@RestController
public class BookController {
  
    @Autowired
    public BookService bookService;
    
    @PostMapping(value= "/createBook") 
    public String createBook( @RequestBody Book book){
        return bookService.createBook(book);   
    }
    
    //OTHER CONTROLLER METHODS
}