Сложный запрос mongodb с Quarkus - PullRequest
3 голосов
/ 01 мая 2020

Мне нужно перенести проект 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 Ответ

1 голос
/ 02 мая 2020

Вы, вероятно, можете попробовать Panache с Mongodb . Вы можете передать Document в метод .find(). В этом объекте вы можете указать любые критерии.

        final Document document = new Document();
        document.put("status","IN_PROGRESS");
        ...
        result = MyData.find(document); // or MyDataRepository

Но вам нужно будет адаптировать часть кода к Panache, что можно сделать либо через расширение PanacheEntity или PanacheEntityBase

...