Как выполнить запрос IN с параметром в шаблоне mongo

#spring #spring-data-mongodb #mongotemplate

#spring #spring-data-mongodb #mongotemplate

Вопрос:

Я новичок в spring, я бы ввел этот запрос в запрос шаблона mongo. Кто-нибудь может мне помочь?

 public List<Prodotto>selectedList(List<Integer>categories){
        
                TypedQuery<Product> findSelectedQuery1 = em
                        .createQuery( "SELECT DISTINCT p FROM Product p WHERE p.category.idCategory IN :categories ",
                                Product.class);
                findSelectedQuery1.setParameter("categories", categories);
                
                return findSelectedQuery1.getResultList();
            }


 

Ответ №1:

Я предполагаю, что ваша «категория» является объектом

 db.Product.aggregate([
  {
    $match: {
      "category.idCategory": {
        $in: categories
      }
    }
  }
])
 

MongoPlayground

Spring-Данные:

 @Autowired
private MongoTemplate mongoTemplate;

...

List<AggregationOperation> pipeline = new ArrayList<>();

//$match
pipeline.add(Aggregation.match(Criteria.where("category.idCategory").in(categories)));

Aggregation agg = Aggregation.newAggregation(pipeline);
return mongoTemplate.aggregate(agg, Product.class, Product.class).getMappedResults();