Как преобразовать Multi<Document>в Map<Long,List<Offer> в Quarkus Reactive с клиентской библиотекой Mongo
Я пытаюсь прочитать данные коллекций из MongoDB, используя ReactiveMongoClient в Quarkus. Я получаю Multi и пытаюсь сопоставить свой пользовательский объект и подготовить список и преобразовать в Map<Long,List> offerMapGroubyCustomerId, но безуспешно. кто-нибудь, пожалуйста, помогите мне в этом. Я пробовал так в своем планировщике в Quarkus Reactive Programming.
Фрагмент кода:
@ApplicationScoped
public class OfferScheduler {
@Inject
ReactiveMongoClient reactiveMongoClient;
@Scheduled(cron = "{cron.expr}")
public void publishPropositions() {
getOffersCollection()
.aggregate(pipeline())
.map(this::mapOffer)
.collect()
.with(Collectors.groupingBy(Offer::getMemberId))
.onItem().transformToUni(this::iterateOfferMap);
}
private Uni<Void> iterateOfferMap(Map<Long, List<Offer>> item) {
// I need to iterate this map here
return Uni.createFrom().nullItem();
}
private Offer mapOffer(Document document) {
return Offer.builder()
.memberId(document.getLong(MEMBER_ID))
.offerId(document.getLong(OFFER_ID))
.remainingUsage(document.getInteger(REMAINING_USAGE))
.offerName(document.getString(PROPOSITION_TYPE))
.status(document.getString(STATUS))
.build();
}
private ReactiveMongoCollection<Document> getOffersCollection() {
return reactiveMongoClient.getDatabase("database").getCollection("offer");
}
}