[英]How to delete object from list in JSON using SpringBoot and MongoDB
[英]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;
}
如果您的存儲庫界面如下所示:
public interface YourRepository extends MongoRepository<T, ID> {}
“YourRepository”將有權訪問所有這些方法:
Baeldung 上有一篇很酷的文章可以指導您選擇您喜歡的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.