簡體   English   中英

如何編寫查詢以從 Springboot 中的 MongoDB 數據庫中刪除 object?

[英]How to write a query to delete an object from my MongoDB database in Springboot?

我的 MongoDB 架構看起來像這樣。 所以我想使用 uname(即用戶名)和 prodname(即產品名稱)刪除任何一個產品。 我們可以使用@Query 注釋來執行此操作或有任何建議嗎?

{
"Id":"string",
"uname":"string",
"products":[
  {
    "prodname":"string",
    "quantity":"int",
    "price":"double"
  }],
"tot_amt":"double",
}

這是我的一個 model Cart.java

public class Cart {
    
    @Id
    public String Id;
    
    @Indexed(unique=true)
    public String uname;
    
    public List<Product>products;
    public double tot_amt;

}

這是另一個 model class Product.java

public class Product {

    public String prodname;
    public int quantity;
    public double price;
}

這是存儲庫接口 CartRepository.java

@Repository

public interface CartRepository extends MongoRepository<Cart,String>{
    
    @Query("{uname:?0}")
    Optional<Cart> findByName(String name);

}

這是服務 class

public class CartService {
    
       @Autowired
       public CartRepository cartRepo;
       
       public MongoTemplate mt;
       
    
    public void saveUser(Cart cart) {
        List<Double>amt= new ArrayList<>();
        List<Product>products=cart.getProducts();
        products.forEach(p -> {
            double price=p.getPrice();
            int quantity=p.getQuantity();
            amt.add(price*quantity);
            
            
        });
         double tot_amount = 0;
            for (Double i : amt)
                tot_amount += i;
            
            cart.setTot_amt(tot_amount);
        
       cartRepo.save(cart);        
    }
     
    public List<Cart> getdata()
    {
        return cartRepo.findAll();
        
    }

    public Optional<Cart> getDetailsByName(String name) {
        
        Optional<Cart> savedCartData=Optional.of(cartRepo.findByName(name).orElseThrow(()->new RuntimeException(String.format("Not found %s",name))));
        return savedCartData;
         
    }
  1. 如果您的存儲庫界面如下所示:

     public interface YourRepository extends MongoRepository<T, ID> {}

“YourRepository”將有權訪問所有這些方法:

MongoRepository 文檔

  1. 使用@Query 你將不得不進行自定義查詢,事實上你可以用它來執行你想要的刪除。

Baeldung 上有一篇很酷的文章可以指導您選擇您喜歡的方式。

Spring數據MongoDB中的查詢指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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