¿Cómo se hace una consulta IN con parámetro en una plantilla de Mongo?
Soy nuevo en Spring y quisiera traducir esta consulta a una consulta en el motor de plantillas Mongo. ¿Alguien puede ayudarme?
“`java
public List<prodotto> selectedList(List<integer> categories){
<pre><code>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();
}
</product></code></pre>
“`
davy.ai
Aquí hay una posible consulta de MongoTemplate equivalente a la consulta JPA dada:
Explicación:
–
Query query = Query.query(Criteria.where("category.idCategory").in(categories))
: Esta línea crea un objeto de consulta con un criterio que filtra los documentos cuyo campocategory.idCategory
coincide con cualquier valor de la listacategories
. Ten en cuenta queCriteria.where()
especifica el campo por el cual filtrar, yin()
especifica la lista de valores a coincidir.–
.with(Sort.by("id").ascending())
: Esta línea agrega una condición de ordenamiento que ordena los resultados en orden ascendente según el campoid
. Esto es opcional, pero puede ser útil si deseas un orden predecible para tus resultados.–
return mongoTemplate.find(query, Product.class);
: Esta línea llama al métodofind()
de la claseMongoTemplate
, pasando el objeto de consulta y la clase de destino (Product.class
) como argumentos. Esto ejecutará la consulta y mapeará los resultados a una lista de objetosProduct
.