Я пытаюсь отфильтровать продукты по предложению «возврат денег», используя фильтр, но он не работает. Заранее спасибо
Мой метод sprinboot:
public List<ProductsObj> getAllCashbackItems() {
Query query = new Query();
query.addCriteria(Criteria.where("listOfPromotions").in("cashback"));
Aggregation aggregation = newAggregation(
project().and(filter("listOfPromotions")
.as("item")
.by(valueOf(
"item.promotionName")
.equalToValue(
"cashback")))
.as("listOfPromotions")
);
return mongoTemplate.aggregate(aggregation, "productsObj", ProductsObj.class).getMappedResults();
}
Моя коллекция похожа:
[
{
"_id": "5be29135f590eb09a079951a",
"name": "tennis ball",
"price": "1500",
"category": "sports",
"listOfPromotions": [
{
"promotionName": "cashback",
"percentage": 12
}
]
},
{
"_id": "5be29142f590eb09a079951b",
"name": "volley ball",
"price": "600",
"category": "sports",
"listOfPromotions": [
{
"promotionName": "dham dhamaal",
"percentage": 6
}
]
},
{
"_id": "5be2914ef590eb09a079951c",
"name": "Dinning table",
"price": "15000",
"category": "furnitures",
"listOfPromotions": [
{
"promotionName": "cashback",
"percentage": 6
},
{
"promotionName": "dham dhamaal",
"percentage": 10
}
]
}
]
Класс моих продуктовObj POJO: -
@Document(collection = "productsObj")
public class ProductsObj {
@Id
public ObjectId _id;
@Indexed
public String name;
public String price;
public String category;
public List<Promotion> listOfPromotions;
//constructors
//getters and setters
}
Я пытаюсь отфильтровать объект на основе вышеупомянутых критериев (т. Е. Предложение кэшбэка). В классе сущностей Promotions содержится PromotionName и процент.