Сложный запрос mongodb с Quarkus
Мне нужно перенести проект Spring Boot на Quarkus. В проекте для всех запросов используется Spring Data Mongodb. Сейчас мне сложно переносить сложные запросы.
Одним из примеров является
public List<MyData> findInProgressData(MyConditions conditions) {
Query mongoQuery = new Query();
mongoQuery.addCriteria(Criteria.where("status").is(IN_PROGRESS));
mongoQuery.addCriteria(Criteria.where("location").is(conditions.getLocationCode()));
if (StringUtils.isNotBlank(conditions.getType())) {
mongoQuery.addCriteria(Criteria.where("type").is(conditions.getType()));
}
if (StringUtils.isNotBlank(conditions.getUserId())) {
mongoQuery.addCriteria(Criteria.where("userId").is(conditions.getUserId()));
}
mongoQuery.with(Sort.by(Sort.Direction.ASC, "createdAt"));
return mongoTemplate.find(mongoQuery, MyData.class);
}
Как я могу реализовать условный запрос с Quarkus?
1 ответ
Решение
Вероятно, вы можете попробовать Panache с Mongodb. Вы можете пройтиDocument
в .find()
метод, В этом объекте вы можете указать любые критерии.
final Document document = new Document();
document.put("status","IN_PROGRESS");
...
result = MyData.find(document); // or MyDataRepository
Но вам нужно будет адаптировать часть кода к Panache, что можно сделать либо путем расширения PanacheEntity
или PanacheEntityBase