Você tem vários "problemas" com o seu script como está escrito. O que fiz foi copiar o script e, para fins de teste e avaliação, simplificá-lo fazendo como substituir o mongorestore por sleep 9999 e inserindo echo da mensagem de rastreio anexada a um arquivo de log. O longo e curto é que não me parece que você precisa de qualquer armadilhas; basta substituir sua declaração mongorestore por:
( mongorestore ...
exit_code=$?
[ $exit_code -ne 0 ] \
&& printf "Process %s for file %s failed with exit code %s\n" \
$BASHPID "${file%.*}" $exit_code
) &
BTW, uma maneira simples de verificar se todos os subprocessos foram gerados em paralelo é abrir outro terminal e executar pgrep -a mongorestore .
Além disso, o uso de EXIT_CODE no final do seu script parece nunca ter um valor, portanto, o comando exit deve falhar com algum tipo de erro, o que significaria que seu script sempre sairia com um erro. erro.