Olá Jade, tudo bem?
Pelo que entendi, você está tentando verificar se todos os IDs de uma lista existem no banco de dados e quer que o método retorne true
apenas se todos existirem, certo?
O método existsAllByLojaIdIn(List<Integer> lojasIds)
do Spring Data MongoDB, que você está tentando usar, irá retornar true
se pelo menos um dos IDs existir no banco de dados, o que não é o que você quer.
Uma solução para o seu problema seria buscar todos os IDs que existem no banco de dados e comparar com a sua lista, retornando true
apenas se todos os IDs da sua lista estiverem presentes. Veja um exemplo de como você poderia fazer isso:
public Mono<Boolean> existsAllByLojaIdIn(List<Integer> lojasIds) {
// Busca todos os IDs no banco de dados
Flux<Loja> lojasNoBanco = this.findAll();
// Converte a lista de IDs para um conjunto para facilitar a comparação
Set<Integer> idsNoBanco = lojasNoBanco.map(Loja::getId).collect(Collectors.toSet()).block();
// Verifica se todos os IDs da lista existem no banco de dados
return Mono.just(lojasIds.stream().allMatch(idsNoBanco::contains));
}
Por favor, note que esse código é apenas um exemplo e pode não funcionar perfeitamente no seu caso específico. Ele também pode ser ineficiente se você tiver muitos registros no banco de dados, pois está buscando todos os IDs. Dependendo do seu caso, pode ser necessário otimizar essa consulta.
Espero ter ajudado e bons estudos!